【NOIP2013模拟】太鼓达人
题目描述
七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行。这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员XLk、Poet_shy和lydrainbowcat拯救出来的的applepi。看到两人对太鼓达人产生了兴趣,applepi果断闪人,于是cl拿起鼓棒准备挑战。然而即使是在普通难度下,cl的路人本性也充分地暴露了出来。一曲终了,不但没有过关,就连鼓都不灵了。Vani十分过意不去,决定帮助工作人员修鼓。
鼓的主要元件是M个围成一圈的传感器。每个传感器都有开和关两种工作状态,分别用1和0表示。显然,从不同的位置出发沿顺时针方向连续检查K个传感器可以得到M个长度为K的01串。Vani知道这M个01串应该是互不相同的。而且鼓的设计很精密,M会取到可能的最大值。现在Vani已经了解到了K的值,他希望你求出M的值,并给出字典序最小的传感器排布方案。
思路
我们可以先将所有的01串按字典序从小到大做出来。我们很容易发现(打表找规律),将全0串放最前面明显是最优的。所以,我自然而然地想到了贪心。
解法
我们先设f[i],将01串按上述做好。设m[i]为第i次检查出的01串是f数组中的第m[i]个,DG判断是否能放入,可以就往下DG。如果方案成立直接输出。
注意
当dg查找到第X层(x>2^n-n+1)时,我们就要特殊处理,因为查找会循环到头,所以我们要判断在末尾的那段是否成立,且该01串结尾是否都为0。
var
n,k,i,j,o,l,q:longint;
bz:array[1..4096]of boolean;
m:array[1..4096]of longint;
p:char;
ans,g:ansistring;
f:array[1..4096]of string;
procedure dg(x:longint);
var
i,j,w:longint;
bj:boolean;
begin
if (x=k+1) then
begin
write(k,' ',f[1]);
for i:=2 to k-n+1 do
write(f[m[i],n]);
writeln;
halt;
end;
if (x>k-n+1) then w:=k-x+1 else w:=n-1;
for i:=1 to k do
begin
bj:=false;
if (bz[i]=false) then
begin
for j:=1 to w do
begin
if (f[i,j]<>f[m[x-1],j+1]) then
begin
bj:=true;
break;
end;
end;
if (w<>n-1) then
begin
for j:=w+1 to n do
if (f[i,j]<>'0') then bj:=true;
end;
if (bj=false) then
begin
bz[i]:=true;
m[x]:=i;
dg(x+1);
bz[i]:=false;
end;
end;
end;
end;
begin
readln(n);
k:=1;
for i:=1 to n do
k:=k*2;
o:=k div 2;
while (o<>0) do
begin
p:='1';
l:=1;
for i:=1 to k div o do
begin
q:=(ord(p)-47)mod 2;
p:=chr(q+48);
for j:=l to l+o-1 do
f[j]:=f[j]+p;
inc(l,o);
end;
o:=o div 2;
end;
ans:='2';
m[1]:=1;
bz[1]:=true;
dg(2);
end.
【NOIP2013模拟】太鼓达人的更多相关文章
- [JZOJ3383] [NOIP2013模拟] 太鼓达人 解题报告(数位欧拉)
来源:XLk 摘录 HDU2894 Description 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队 ...
- JZOJ 3383. 【NOIP2013模拟】太鼓达人
3383. [NOIP2013模拟]太鼓达人 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limits ...
- 2018.11.3 Nescafe18 T2 太鼓达人
题目 背景 七夕祭上,Vani 牵着 cl 的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员 XLk.Poet_shy 和 ly ...
- Silverlight 手鼓达人-仿太鼓达人 开源
Silverlight 手鼓达人-仿太鼓达人 介绍 手鼓达人是本人2012年中silverlight最火的一段时间开发的,本来目的只是想研究一下silverlight做游戏和做应用有何不同,但是后面 ...
- 【BZOJ-3033】太鼓达人 欧拉图 + 暴搜
3033: 太鼓达人 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 204 Solved: 154[Submit][Status][Discuss] ...
- bzoj 3033: 太鼓达人 [欧拉回路]
3033: 太鼓达人 题意:长m的01环,每个长k的子串都是不同的01串.给出k,求最大的M以及字典序最小的方案. \(M=2^k\) 可以把k-1位01串看成点,k位01串就是边,满足欧拉回路的条件 ...
- BZOJ3033太鼓达人——哈密顿回路/欧拉回路
题目描述 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员XLk.Poet_shy和lydrainbo ...
- bzoj3033: 太鼓达人 欧拉路径
题目链接 bzoj3033: 太鼓达人 题解 对于k-1位点,k位二进制位边,将点的转移连起来 每个点的入度和出度相等并且全部是偶点 只需要在这个图中找字典序最小的欧拉回路 可以贪心地找字典序较小的边 ...
- 【刷题】BZOJ 3033 太鼓达人
Description 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员XLk.Poet_shy和ly ...
随机推荐
- CSS3 新添选择器
目录 属性选择器 结构伪类选择器 伪元素选择器 属性选择器 属性选择器可以元素特定属性来进行选择,这样就可以不借助于类选择器或id选择器 选择符 简述 E[att] 选择具有att属性的E元素 E[a ...
- MySQL元数据信息
一.查看数据库清单 show databases; 二.查看数据库下表清单 方法1) show full tables from ${schema名}; 方法2) use ${数据库名}; show ...
- 教你如何使用ES6的Promise对象
教你如何使用ES6的Promise对象 Promise对象,ES6新增的一个全新特性,这个是 ES6中非常重要的一个对象 Promise的设计初衷 首先,我们先一起了解一下,为什么要设计出这么一个玩意 ...
- go语言gRPC系列(三) - 使用grpc-gateway同时提供HTTP和gRPC服务
1. gRPC提供HTTP服务 1.1 存在的意义 1.2 代码示例 1.3 使用postman尝试调用 1.4 gRPC客户端代码调用 2. 使用grpc-gateway同时提供HTTP和gRPC服 ...
- 开发APP遇到的问题
1.代码尽量复用 2.调用高德地图,直辖市等,省字段一定有值,市可能为空(pro:'北京市',city:[]) 3.支付密码不用组件 <template> <view> < ...
- Java之Annotation(注解)——注解处理器
如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了.使用注解的过程中,很重要的一部分就是创建于使用注解处理器.Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处 ...
- 推断(inference)和预测(prediction)
上二年级的大儿子一直在喝无乳糖牛奶,最近让他尝试喝正常牛奶,看看反应如何.三天过后,儿子说,好像没反应,我可不可以说我不对乳糖敏感了. 我说,呃,这个问题不简单啊.你知道吗,这在统计学上叫推断. 儿子 ...
- Linux 常用软件清单
Linux 常用软件清单 下面是Linux环境的一些软件(有些只是关键字,直接搜素即可): arch 系列的是 pacman -Ss <关键字> debian 系列的是 apt searc ...
- Java8中的Stream API
本篇文章继续介绍Java 8的另一个新特性——Stream API.新增的Stream API与InputStream和OutputStream是完全不同的概念,Stream API是对Java中集合 ...
- python3中异常处理方法 try-except-else-finally
个人感觉逻辑上类似if else条件判断 但这是对语法错误以及抛出异常的处理 异常处理 try/except 异常捕捉可以使用 try/except 语句. 以下例子中,让用户输入一个合法的整数,但是 ...