JZYZOJ 1385 拉灯游戏 状态压缩 搜索
http://172.20.6.3/Problem_Show.asp?id=1385
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
const int maxn=(<<)+;
int a[]={};
char ch[]={};
int f[maxn]={};//第一行操作数量
int f1[maxn]={};//第一行操作对第二行的影响
int nn[maxn]={};//第一行操作后得到的数
//以上三个通过dfs计算
int aa[maxn]={};//下一行来填满这一行对下一行的影响
int bb[maxn]={};//对下下一行的影响
int z[maxn]={};//操作数量
//以上三个预处理
int ma=maxn-;
void dfs1(int k,int num,int d,int z){
if(k>=){
f[z]=d;f1[z]=z;nn[z]=num;
return;
}
int w=<<k,w1;
if(k>=)w1=(<<(k-))&ma;
else w1=/;
dfs1(k+,num,d,z);
dfs1(k+,num^w1,d+,z^w);
}
int main(){
//freopen("wtf.in","r",stdin);
//freopen("wtf.out","w",stdout);
int T;scanf("%d",&T);
for(int i=;i<=ma;i++){
int k=;
for(int j=;j<=;j++){
int w=<<k,w1;
if(k>=)w1=(<<(k-))&ma;
else w1=/;
if((i&w)==) aa[i]=aa[i]^w1,z[i]++;
k--;
}
bb[i]=(~i)&ma;
}
while(T-->){
memset(a,,sizeof(a));
for(int i=;i<=;i++){
scanf("%s",&ch);
for(int j=;j<=;j++){
a[i]*=;
a[i]+=ch[j-]-'';
}
}memset(f,,sizeof(f));
int da=f[];
dfs1(,a[],,);
int ans=da;
for(int i=;i<=ma;i++){
int nex1=aa[nn[i]],nex2=bb[nn[i]],bu=f[i]+z[nn[i]],num=f1[i],zz;
for(int j=;j<=;j++){
num=num^a[j]^nex1;//初始状态
nex1=aa[num];//填满需要几步
if(j==&&num==ma)ans=min(ans,bu);
bu+=z[num];
zz=nex2;nex2=bb[num];num=zz;//填满这一行对下下一行的影响
}
}
if(ans>)printf("%d\n",-);
else printf("%d\n",ans);
}
return ;
}
JZYZOJ 1385 拉灯游戏 状态压缩 搜索的更多相关文章
- POJ 1632 Vase collection【状态压缩+搜索】
题目传送门:http://poj.org/problem?id=1632 Vase collection Time Limit: 1000MS Memory Limit: 10000K Total ...
- Codeforces3C. Tic-tac-toe 题解 状态压缩+搜索
作者:zifeiy 标签:状态压缩.搜索 题目链接:https://codeforces.com/contest/3/problem/C 题目大意: 有一个 \(3 \times 3\) 的棋盘,给你 ...
- CF1114F Please, another Queries on Array?(线段树,数论,欧拉函数,状态压缩)
这题我在考场上也是想出了正解的……但是没调出来. 题目链接:CF原网 题目大意:给一个长度为 $n$ 的序列 $a$,$q$ 个操作:区间乘 $x$,求区间乘积的欧拉函数模 $10^9+7$ 的值. ...
- [Usaco2007 Open]Fliptile 翻格子游戏 状态压缩
考试想到了状压,苦于T1废掉太长时间,于是默默输出impossible.. 我们知道,一个格子的翻转受其翻转次数和它相邻翻转次数的影响. 由每一个位置操作两次相当于把它翻过来又翻回去,所以答案中每一个 ...
- 搜索进阶课件,视频,代码(状态压缩搜索,折半搜索,dfs,bfs总结)
链接:https://pan.baidu.com/s/1-svffrprCOO4CtQoCTQ9hQ 提取码:h909 复制这段内容后打开百度网盘手机App,操作更方便哦
- hdu4845 状态压缩BFS
题意: 给一个n*m的矩阵,从11,走到nm,格子和格子之间可能有墙,也可能有门,有的格子上面有钥匙,相应的钥匙开相应的们,捡钥匙和开门都不需要时间,问你最少多少部能走到nm. 思路: ...
- loj 1011(状态压缩+记忆化搜索)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25837 思路:状态压缩+记忆化搜索. #include<io ...
- 最大联通子数组之和(dfs,记忆化搜索,状态压缩)
最大联通子数组,这次的题目,我采用的方法为dfs搜索,按照已经取到的数v[][],来进行搜索过程的状态转移,每次对v[][]中标记为1的所有元素依次取其相邻的未被标记为1的元素,将其标记为1,然而,这 ...
- UVA565 Pizza Anyone? (状态压缩,搜索)
UVA565 Pizza Anyone? 大致题意:现在你要做一份披萨,有A到P共16种食材.现在给你1~12个人对这个披萨加入不同食材的条件(只包含想要和不想要两种)(加号是想要,减号是不想要,不一 ...
随机推荐
- httpd -v command not found
使用 find / -name "apachectl"查找文件目录下执行 ./apachectl -v
- EditText中inputType详解
<EditText Android:layout_width="fill_parent" android:layout_height="wrap_content&q ...
- javaWeb面试题(重要)
1.Javaweb 技术的结构 1.1 技术结构图
- LCD实验学习笔记(六):存储控制器
s3c2440可使用地址空间为1GB(0x00000000到0x40000000). 1G空间分为8个BANK,每个BANK为128MB. 设27条地址线,和8个片选引脚(nGCS0-nGCS7). ...
- 纠结于arch+xfce还是xubuntu
现在用的是ubuntu gnome版 http://www.tuicool.com/articles/6r22eyU 现在纠结于arch+xfce还是xubuntu,因为不想在gnome下面搞什么美化 ...
- MySQL:Can't create test file XXX.lowe-test
问题说明 今天部署MySQL,在使用mysql_install_db,初始化数据库时报如下错误 180622 11:36:38 mysqld_safe Starting mysqld daemon w ...
- C++之编译器与链接器工作原理
原文来自:http://blog.sina.com.cn/s/blog_5f8817250100i3oz.html 这里并没不是讨论大学课程中所学的<编译原理>,只是写一些我自己对C++编 ...
- 【bzoj4551】TJOI2016&HEOI2016树
这题嘛…… 子树询问什么的,直接dfs序线段树无脑写,是吧…… 然后几分钟之内zcy就写出了这样的东西: #include<bits/stdc++.h> #define N 100005 ...
- caffe solver.prototxt 生成
from caffe.proto import caffe_pb2 s = caffe_pb2.SolverParameter() path='/home/xxx/data/' solver_file ...
- Python爬虫数据处理
一.首先理解下面几个函数 设置变量 length()函数 char_length() replace() 函数 max() 函数1.1.设置变量 set @变量名=值 set @address='中国 ...