状压dp
Last0rder
最后之作
展开
-
hdu 4778 Gems Fight!
第一次写状压dp……题意:http://blog.csdn.net/dyx404514/article/details/15506601状压dp+博弈吧……#include#include#include#include#include#include#include#include#include#includeusing namespace std;int d原创 2014-11-14 17:47:58 · 946 阅读 · 0 评论 -
uva live 12846 A Daisy Puzzle Game
如果下一个状态有必败,那么此时状态一定是必胜,否则此时状态一定是必败状压DP#include#include#include#include#include#include#include#include#include#includeusing namespace std;int dp[1<<20];int n;int dfs(int state){原创 2014-11-14 21:47:26 · 999 阅读 · 0 评论 -
hdu5094 Maze
……就是爬管道……还好内存给的多……不然就不会做了……#include#include#include#include#include#include#include#include#include#includeusing namespace std;const int inf=(1<<31)-1;int dp[51][51][1<<10];int ro原创 2014-11-16 18:29:03 · 1062 阅读 · 0 评论 -
hdu4771 Stealing Harry Potter's Precious
注意……可能会爆内存……如果是直接爆搜的话……把队列存的元素减少就行了……#include#include#include#include#include#include#include#include#include#includeusing namespace std;const int inf=(1<<30)-1+(1<<30);int goal;cha原创 2014-11-17 14:02:12 · 938 阅读 · 0 评论 -
poj 2411 Mondriaan's Dream
给出一个n*m的棋盘,及一个小的矩形1*2,问用这个小的矩形将这个大的棋盘覆盖有多少种方法。dp[i][j]:有多少种方法,可以使得第i行的状态为jdp[i][j]=sum{dp[i-1][k],k可以通过合法变化变成状态j}0:该位置空余1:该位置被占有的人问,每个位置不是3种状态吗?即不放矩形,横放一个矩形,竖放一个矩形当然了,这样定义状态也原创 2014-12-11 21:23:15 · 928 阅读 · 0 评论 -
codeforces 543 C Remembering Strings
题意:若一个字符串集合里的每个字符串都至少有一个字符满足在i位上,只有它有,那么这个就是合法的,给出所有串的每个字符改动的花费,求变成合法的最小代价。做法:dp[i][j],前i个串的状态为j时的最小花费。j:状压表示已经合法的是哪些串。可以知道,若j前有i个1,那么访问它就是多余的,所以去掉i,枚举j即可。对于一个串的i位,若考虑它为这个串的唯一标识,那么无非原创 2015-07-29 12:07:12 · 993 阅读 · 2 评论