bzoj3033 太鼓达人——欧拉图搜索
2024-10-20 17:18:13
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3033
考虑那 (1<<k) 个数,要形成答案,必然是相邻两个数间有 k-1 个重叠位置,也就是两个有 k-1 位前后对应相同的数之间可以连边转移;
发现这张图里每个点一定有两个入度、两个出度,也就是形成一张欧拉图;
所以暴搜时间有保证,暴搜即可;
对欧拉图还是太不熟悉了...暴搜也写不出来了...有种无力感...
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int const maxn=(<<)+;//+5!!!
int k,m,ans[maxn],num,top,lst[maxn];
bool fl,vis[maxn];
void find(int y,int x)
{
num=;
while(y!=x)ans[++num]=y,y=lst[y];
ans[++num]=x;
}
void dfs(int x)
{
vis[x]=; top++;
if(top==(<<k)){find(x,); fl=; return;}
for(int i=;i<=&&!fl;i++)
{
int y=((x&((<<(k-))-))<<|i);
if(vis[y])continue;
lst[y]=x; dfs(y);
}
vis[x]=; top--;
}
int main()
{
scanf("%d",&k);
// m=(1<<k);//比下面慢
// printf("%d ",m);
dfs();
printf("%d ",num);
for(int i=num;i;i--)printf("%d",(ans[i]>>(k-)));
return ;
}
最新文章
- XMLHTTPRequest对象的创建与浏览器的兼容问题
- Ant打包
- PHP中include和require的区别详解
- android向web提交参数的4种方式总结,附带网站案例源码
- TeeChart的X轴,使用伪装的时间
- Error Code: 1175
- popen()函数详解
- java虚拟机 jvm 方法区实战
- js坚持不懈之13:JavaScript查找HTML元素的方法
- django项目环境搭建
- PTA——字符串逆序
- python 计算机发展史,线程Process使用 for循环创建 2种传参方式 jion方法 __main__的解释
- 右击菜单一键优化(增加新建office2003、新建reg和bat,删除新建公文包、新建wps、新建rar)
- ASP.NET Core 3.0 实战:构建多版本 API 接口
- 华为云对Kubernetes在Serverless Container产品落地中的实践经验
- MVC+WCF框架下广告位管理——文件上传
- OC 设计模式
- IO习题
- Java精选笔记_IO流【File(文件)类、遍历目录下的文件、删除文件及目录】
- Direct ByteBuffer学习