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个人对这个披萨加入不同食材的条件(只包含想要和不想要两种)(加号是想要,减号是不想要,不一 ...
随机推荐
- 【BZOJ】1754: [Usaco2005 qua]Bull Math
[算法]高精度乘法 #include<cstdio> #include<algorithm> #include<cstring> using namespace s ...
- How to write educational schema.
Sometimes, writing such educational schemas could be of much use, and creating such docs can be bene ...
- MSSQL 基础知识001
数据库概述: DBMS(Database Management System,数据库管理系统)和数据库. 平时谈到“数据库”可能有两种含义:MSSQLServer.Oracle等某种DBMS:存放一堆 ...
- 极致的 Hybrid:航旅离线包再加速!(转)
资源离线的思路简单.场景复杂,最复杂的就是 H5 活动页面的离线化.Mobile Web 在弱网提速的唯一的办法就是坚决杜绝不必要的(运行时)网络请求,即除了 Json 格式的动态数据和其携带的商品配 ...
- B题 hdu 1407 测试你是否和LTC水平一样高
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1407 测试你是否和LTC水平一样高 Time Limit: 2000/1000 MS (Java/Ot ...
- JSX语法规范
1.只有一个开始节点和一个尾节点 正确的写法 ReactDOM.render( <div>hello,你好</div>, document.body ) 错误的写法,开始节点和 ...
- 模型验证与模型集成(Ensemble)
作者:吴晓军 原文:https://zhuanlan.zhihu.com/p/27424282 模型验证(Validation) 在Test Data的标签未知的情况下,我们需要自己构造测试数据来验证 ...
- java===java基础学习(15)---抽象,接口
抽象 //这就是一个抽象类 abstract class Animal { String name; int age; abstract public void cry(); } //当一个类继承的父 ...
- 中断中处理延时及一些函数的调用规则(中断调i2c驱动有感)--中断中的延迟delay与printk函数的冲突【转】
转自:http://blog.csdn.net/psvoldemort/article/details/8222371 1,中断处理程序中不能使用有睡眠功能的函数,如ioremap,kmalloc,m ...
- 访问dubbo没有权限,通过ip进行跳转服务器,并通过有权限服务器代理访问
#启动ip跳转 echo 1 > /proc/sys/net/ipv4/ip_forward vi /etc/sysctl.conf net.ipv4.ip_forward =1 sysctl ...