最多只有一个连通块大小大于$nk$,所以用hash表进行BFS的时候只扩展$nk$步即可。

时间复杂度$O(n^2k)$。

#include<cstdio>
typedef long long ll;
const int N=5001000,M=9999991;
int n,m,lim,i,h=1,t,g[M],nxt[N],ed;ll v[N],a[N/5],q[N],x,S,T;char s[70];
inline void del(ll x){
int u=x%M;
v[ed]=x;nxt[ed]=g[u];g[u]=ed++;
}
inline void add(ll x){
int u=x%M;
for(int i=g[u];i;i=nxt[i])if(v[i]==x)return;
v[ed]=x;nxt[ed]=g[u];g[u]=ed++;q[++t]=x;
}
inline ll read(){
ll t=0;
scanf("%s",s);
for(int i=0;i<n;i++)t=t*2+s[i]-'0';
return t;
}
int main(){
scanf("%d%d",&n,&m);lim=n*m+5;
add(S=read());T=read();
for(i=0;i<m;i++)del(a[i]=read());
while(h<=t&&t<=lim){
x=q[h++];
if(x==T)return puts("TAK"),0;
for(i=0;i<n;i++)add(x^(1LL<<i));
}
if(t<=lim)return puts("NIE"),0;
for(h=1,t=ed=i=0;i<M;i++)g[i]=0;
add(T);
for(i=0;i<m;i++)del(a[i]);
while(h<=t&&t<=lim){
x=q[h++];
if(x==S)return puts("TAK"),0;
for(i=0;i<n;i++)add(x^(1LL<<i));
}
return puts(t<=lim?"NIE":"TAK"),0;
}

  

BZOJ3421 : Poi2013 Walk的更多相关文章

  1. POI2013题解

    POI2013题解 只做了BZ上有的\(13\)道题. 就这样还扔了两道神仙构造和一道计算几何题.所以只剩下十道题了. [BZOJ3414][Poi2013]Inspector 肯定是先二分答案,然后 ...

  2. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  3. python os.walk()

    os.walk()返回三个参数:os.walk(dirpath,dirnames,filenames) for dirpath,dirnames,filenames in os.walk(): 返回d ...

  4. LYDSY模拟赛day1 Walk

    /* 依旧考虑新增 2^20 个点. i 只需要向 i 去掉某一位的 1 的点连边. 这样一来图的边数就被压缩到了 20 · 2^20 + 2n + m,然后 BFS 求出 1 到每个点的最短路即可. ...

  5. How Google TestsSoftware - Crawl, walk, run.

    One of the key ways Google achievesgood results with fewer testers than many companies is that we ra ...

  6. poj[3093]Margaritas On River Walk

    Description One of the more popular activities in San Antonio is to enjoy margaritas in the park alo ...

  7. os.walk()

    os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下. walk()方法语法格式如下: os.walk(top[, topdown=True[, onerror=None[ ...

  8. 精品素材:WALK & RIDE 单页网站模板下载

    今天,很高兴能向大家分享一个响应式的,简约风格的 HTML5 单页网站模板.Walk & Ride 这款单页网站模板是现代风格的网页模板,简洁干净,像素完美,特别适合用于推广移动 APP 应用 ...

  9. 股票投资组合-前进优化方法(Walk forward optimization)

    code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

随机推荐

  1. iOS 十六进制和字符串转换

    NSString *dictString = [dict JSONFragment];//组合成的. dictString==={"content":"Sadgfdfg& ...

  2. CLR via C#(05)- 访问限定、数据成员

    今天跟大家分享一下关于访问限定和数据成员的知识.主要包括以下两点: Abstract, sealed, virtual, new, override怎么用? Const 和 readonly好像都表示 ...

  3. python面向对象进阶 反射 单例模式 以及python实现类似java接口功能

    本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和特性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存 ...

  4. .Learning.Python.Design.Patterns.2nd.Edition之单实例模式

    可以慢慢理解.. 对照JAVA class Singleton(object): def __new__(cls): if not hasattr(cls, 'instance'): cls.inst ...

  5. VS2015 Preview Secondary Installer 离线安装

    VS2015 Preview Secondary Installer 离线安装 天朝的原因orz, 装过vs2015 preview 的人都懂的,第二阶段安装会失败.假公济私的研究了下VS2015,摸 ...

  6. hdu 4272 2012长春赛区网络赛 dfs暴力 ***

    总是T,以为要剪枝,后来发现加个map就行了 #include<cstdio> #include<iostream> #include<algorithm> #in ...

  7. hdu 4010 动态树 @

    kuangbin模板题,看起来十分高大上 /* *********************************************** Author :kuangbin Created Tim ...

  8. java 访问 usb

    java 要访问 usb 设备,通常要自己写c/c++代码,然后再用 java 访问这些组件,以达到控制usb设备的目的.但现在有一个开源组件 libusb 帮我们做好了访问usb设备的封装(包括wi ...

  9. Hbuilder连接模拟器调试

    Hbuilder是一个非常好用的HTML5开发IDE,我最喜欢的功能就是连接手机调试了,连接手机调试有两种途径,一是通过USB连接真机,二是下载安装一个安卓模拟器,让Hbuilder连接到安卓模拟器, ...

  10. OC对象的动态和静态构造区别

    Student.h: #import <Foundation/Foundation.h> @interface Student : NSObject @property(nonatomic ...