拯救大兵瑞恩 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 264    Accepted Submission(s): 106 Problem Description 1944年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩.瑞恩被关押在一个迷宫里,迷宫地形复杂,但是幸好麦克得到了迷宫的地形图…
Paint on a Wall Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others)Total Submission(s): 830    Accepted Submission(s): 325 Problem Description Annie wants to paint her wall to an expected pattern. The wall can be repr…
LINK:分层图 很精辟的一道题 写的时候没带脑子 导致搞了半天不知道哪错了. 可以想到状压每次到某一层的状态 然后这个表示方案数 多开一维表示此时路径条数的奇偶即可. 不过显然我们只需要知道路径条数的奇偶性即可. 所以对于当前状态 如果某个点路径条数为偶数 那么怎么转移都不必要 所以我们可以不需要多开一维状态来进行转移. 状态直接表示 成奇偶性即可. 考虑转移 容易发现 转移需要求出当前点集能到的下一层的点集 然后还要求出奇偶性. 暴力枚举 复杂度\(mk2^k\) 容易想到 不需要暴力枚举…
BZOJ1195 LOJ10061 题目大意:给你$n$个模式串,求一个最短且字典序最小的文本串并输出这个串,$n<=12,len<=50$ 首先对所有模式串构造$Trie$图,$Trie$图的性质和$DP$的性质简直是完美契合.. 模式串数量很少,考虑状压 定义$f[x][s]$表示现在所在$Trie$图内的位置为$x$,已经匹配到的串的状态为$s$,此时需要文本串的最短长度 转移十分显然,$f[fail_{x}][s|ed[fail_{x}])]=min(f[x][s])+1$ 最后找出最…
题目链接 #include<bits/stdc++.h> using namespace std; typedef long long LL; int n,m,p,s,k; ,,,-}; ,-,,}; ][][<<]; //vis[i][j][k]记录是否以k状态访问过(i,j)位置 ][][][]; //记录墙和门的情况 ][]; //记录迷宫中钥匙的存在状态 struct node { int x,y; //x,y记录坐标 int own; //own记录钥匙的拥有情况 int…
1.状压bfs 这个状压体现在key上  我i们用把key状压一下  就能记录到一个点时 已经拥有的key的种类 ban[x1][y1][x2][y1]记录两个点之间的状态 是门 还是墙 还是啥都没有 inc[x][y]记录这个点所存储的钥匙  (可能不止一个 所以要用二进制) vis[x][y][key]  标记当前点 在拥有的钥匙种类为key时是否走过 #include <iostream> #include <cstdio> #include <sstream>…
状压BFS 注意在用二维字符数组时,要把空格.换行处理好. #include<stdio.h> #include<algorithm> #include<string.h> #include<queue> using namespace std; #define INF 0x3f3f3f3f int sx,sy,C,n,m; int ans; ][][<<]; ][]; ][]; ,,-,},dy[]={,,,-}; <=a&&am…
POJ 1324 Holedox Moving (状压BFS) Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 18091 Accepted: 4267 Description During winter, the most hungry and severe time, Holedox sleeps in its lair. When spring comes, Holedox wakes up, moves to the…
P2622 关灯问题II 题目描述 现有n盏灯,以及m个按钮.每个按钮可以同时控制这n盏灯——按下了第i个按钮,对于所有的灯都有一个效果.按下i按钮对于第j盏灯,是下面3中效果之一:如果a[i][j]为1,那么当这盏灯开了的时候,把它关上,否则不管:如果为-1的话,如果这盏灯是关的,那么把它打开,否则也不管:如果是0,无论这灯是否开,都不管. 现在这些灯都是开的,给出所有开关对所有灯的控制效果,求问最少要按几下按钮才能全部关掉. 输入输出格式 输入格式: 前两行两个数,n m 接下来m行,每行n…
​题意:1个机器人找几个垃圾,求出最短路径. 状压BFS,这道题不能用普通BFS二维vis标记数组去标记走过的路径,因为这题是可以往回走的,而且你也不能只记录垃圾的数量就可以了,因为它有可能重复走同一个垃圾.其实解决的办法就是把vis标记数组开到3维,用来存每次走的状态.再通过位运算即可. 下面是2中常见的位运算操作: 1.加入某一个垃圾:rubblish | =( 1 << i ); eg: 0001 | 0100 =0101 ; 2.进行垃圾匹配 :if( (  rubblish &…