[BZOJ3033]太鼓达人|欧拉图
Description
七夕祭上,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的值,并给出字典序最小的传感器排布方案。
首先这道题如果在知道第一问答案的基础上做第二问有个显然的做法就是DFS
但是时间复杂度..?第一问的答案<=2^k,每一位回溯也就是2^(2^k)//想都不要想啦...>_<
我们来想象这个回溯有没有什么特别的性质
我们把每连着的k个数字当成一个点,每个点的出边有两条,因为下一个数字可能是0可能是1
入边同理也是两条,因为上一个数字可能是0可能是1
然后我们发现每个点的出度=入度,而这恰好是欧拉图的判定条件
所以原图是欧拉图,必然存在一条欧拉回路
那么随意第一问必然可以取到最大的2^k
对于第二问,还是原来的DFS,但是仔细想想会发现时间复杂度实际上是O(n)的
因为除了遇到自环之外是没有往回的机会的
可能会说:走到一个地方前面没路可走了?
显然这不符合欧拉图的性质
所以几乎一条线拉到底答案就出来啦
{
Euler Diagram
}
program bzoj3033;
const maxn=;
var ans,k,i:longint;
b:array[-..maxn]of longint;
used:array[-..maxn]of boolean;
function dfs(p,step:longint):boolean;
begin
if not used[p] then exit(false);
used[p]:=false;
b[step]:=p >> (k-);
if step=ans then exit(true);
if dfs(p << and (ans-),step+) then exit(true);
if dfs(p << and (ans-)+,step+) then exit(true);
used[p]:=true;
exit(false);
end;
begin
readln(k);
ans:=;
fillchar(used,sizeof(used),true);
for i:= to k do ans:=ans*;
write(ans,' ');
dfs(,);
for i:= to ans do write(b[i]);
end.
另外补一点欧拉图的定理:
欧拉回路:经过图中每条边一次、行遍所有顶点的回路
欧拉通路:经过图中每条边一次、行遍所有顶点的路径
欧拉图:图中存在欧拉回路的图(可以脑补成在欧拉回路的边集基础上乱加几条边)
半欧拉图:包含欧拉通路的图
无向图欧拉图的判定:为连通图且图中的点度数均为偶数
无向图欧拉通路的判定:为连通图且图中奇度点的个数只有0或2个
有向图欧拉图的判定:为连通图且图中每个点的入度=出度
有向图欧拉通路的判定:为连通图除了两个点外其他点的入度=出度,一个点的入度=出度+1,一个点的出度=入度+1,或者两个点的出度都=出度
[BZOJ3033]太鼓达人|欧拉图的更多相关文章
- bzoj3033 太鼓达人——欧拉图搜索
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3033 考虑那 (1<<k) 个数,要形成答案,必然是相邻两个数间有 k-1 个重 ...
- BZOJ3033 太鼓达人题解
太鼓达人 时间限制: 1 Sec 内存限制: 128 MB 题目描述 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是 ...
- bzoj3033: 太鼓达人 欧拉路径
题目链接 bzoj3033: 太鼓达人 题解 对于k-1位点,k位二进制位边,将点的转移连起来 每个点的入度和出度相等并且全部是偶点 只需要在这个图中找字典序最小的欧拉回路 可以贪心地找字典序较小的边 ...
- 【BZOJ-3033】太鼓达人 欧拉图 + 暴搜
3033: 太鼓达人 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 204 Solved: 154[Submit][Status][Discuss] ...
- BZOJ3033:太鼓达人(DFS,欧拉图)
Description 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员XLk.Poet_shy和ly ...
- BZOJ3033 太鼓达人
3033: 太鼓达人 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 690 Solved: 497[Submit][Status][Discuss] ...
- [bzoj3033]太鼓达人 题解(搜索)
Description 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员XLk.Poet_shy和ly ...
- BZOJ3033太鼓达人——哈密顿回路/欧拉回路
题目描述 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员XLk.Poet_shy和lydrainbo ...
- BZOJ3033: 太鼓达人(欧拉回路)
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 524 Solved: 400[Submit][Status][Discuss] Description ...
随机推荐
- 如何删除TFS项目
TFS是先建集合,再在集合下面建项目.删除的时候,需要先删除项目,再删除集合,然后重新建.具体步骤如下: 1.删除项目 删除项目必须通过命令来进行删除,调用TFSDeleteProjec ...
- unity3d NavMeshAgent 寻路画线/画路径
今天在群里看见有个小伙在问Game视图寻路时怎么画线 正好前几天写了个寻路,而且自己也不知道具体怎么在寻路时画线,所以决定帮帮他,自己也好学习一下 在百度查了一下资料,直接搜寻路画路径.寻路画线... ...
- 简单理解DES加密算法
数据加密标准(Data Encryption Standard,DES)是当前使用最广泛的加密体制,对于任意的加密方案,总有两个输入:明文和密钥. 明文是64bits,密钥是56bits 加密过程就是 ...
- Java面试题(上)
2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对 ...
- Java空指针异常解决方法
Throwable是所有错误或异常的超类,只有当对象是这个类的实例时才能通过Java虚拟机或者Java throw语句抛出. 当Java运行环境发出异常时,会寻找处理该异常的catch块,找到对应的c ...
- Leader Election
Leader Election Zookeeper的基本操作 Zookeeper虽然是分布式系统,但它并不是为文件存储而设计的,Zookeeper里存储的一般是配置信息和源信息.实际上,Zookeep ...
- js canvas captcha
js canvas captcha https://thejackalofjavascript.com/building-a-captcha-using-html5-canvas/ https://a ...
- 解决微信小程序配置https不成功问题
拿到一个微信小程序的项目,需要配置https安全链接(为什么必须使用https不再赘述),预想这个已经很成熟的流程,应该不会有太大问题,结果还真是出乎意料,竟然掉进一个大坑,折腾好久. 申请证书配置的 ...
- 处理大并发量订单处理的 KafKa部署总结
处理大并发量订单处理的 KafKa部署总结 今天要介绍的是消息中间件KafKa,应该说是一个很牛的中间件吧,背靠Apache 与很多有名的中间件搭配起来用效果更好哦 ,为什么不用RabbitMQ,因为 ...
- Android中有哪些好的开发框架?
在安卓开发中,框架的使用必不可少,合理利用一些好的开发框架,往往可以达到事半功倍的效果.本文小编就将和大家分享安卓开发者不得不知的5款框架,一起来看看吧,新技能get走起~~ 1.thinkAndro ...