![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
状压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 #include using namespace std; int d原创 2014-11-14 17:47:58 · 926 阅读 · 0 评论 -
uva live 12846 A Daisy Puzzle Game
如果下一个状态有必败,那么此时状态一定是必胜,否则此时状态一定是必败 状压DP #include #include #include #include #include #include #include #include #include #include using namespace std; int dp[1<<20]; int n; int dfs(int state) {原创 2014-11-14 21:47:26 · 979 阅读 · 0 评论 -
hdu5094 Maze
……就是爬管道…… 还好内存给的多…… 不然就不会做了…… #include #include #include #include #include #include #include #include #include #include using namespace std; const int inf=(1<<31)-1; int dp[51][51][1<<10]; int ro原创 2014-11-16 18:29:03 · 1048 阅读 · 0 评论 -
hdu4771 Stealing Harry Potter's Precious
注意……可能会爆内存…… 如果是直接爆搜的话…… 把队列存的元素减少就行了…… #include #include #include #include #include #include #include #include #include #include using namespace std; const int inf=(1<<30)-1+(1<<30); int goal; cha原创 2014-11-17 14:02:12 · 924 阅读 · 0 评论 -
poj 2411 Mondriaan's Dream
给出一个n*m的棋盘,及一个小的矩形1*2,问用这个小的矩形将这个大的棋盘覆盖有多少种方法。 dp[i][j]:有多少种方法,可以使得第i行的状态为j dp[i][j]=sum{dp[i-1][k],k可以通过合法变化变成状态j} 0:该位置空余 1:该位置被占 有的人问,每个位置不是3种状态吗?即不放矩形,横放一个矩形,竖放一个矩形 当然了,这样定义状态也原创 2014-12-11 21:23:15 · 916 阅读 · 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 · 977 阅读 · 2 评论