ACM_DP_状态压缩DP
文章平均质量分 66
9974
这个作者很懒,什么都没留下…
展开
-
POJ 3254 状态压缩DP简单题
#include #include #include using namespace std;const int mod = 100000000;int n, m, M;int state[400], tot;int a[15];bool f[400][400];int dp[13][400];void add(int &a, int b) { a += b; if(a >原创 2013-04-19 16:47:59 · 1336 阅读 · 0 评论 -
2011-2012 Stanford Local Contest, 8 October, 2011(完全) (2013区域赛练习)
比赛入口 MycodeA 看懂题意以后, 3的k次方为一组找3的k+1次方与它的关系,简单推一下B 可以dp公式,我YY的,答案为2^(2*n-1)*1*3*...*(2*n-1)C n条边有两种情况: 有一个简单环 或者 有一条重边 1.如果有环, 我们用dfs预处理出 dfs第一个搜到的环上的点pos 到环上任意点 的原创 2013-11-12 09:49:39 · 2180 阅读 · 0 评论 -
hdu 4778 13杭州I题 状态压缩dp+博弈
分析:博弈的过程是一个树,而且要知道在最优策略情况下,肯定是选择了树上的某一条树枝,也就是一条路径。所以我们可以用dp来找出某一条最优路径,而且我们可以发现2个人博弈的目的是为了让自己与另一个人的差值尽可能的大。解法:用dp[i]表示状态i(能拿的置为1)的情况下先手减去后手分数的最大值。初始化dp[1对于dp[i], 选第j个包, 如果这次拿好分数增加tp, 那么用 dp[i原创 2013-11-09 20:59:35 · 2949 阅读 · 0 评论 -
状态压缩DP 简单入门题 11题
1.每一行用一个二进制数表示, 有些二进制数是题目中不合法的状态,我们可以预处理出一行合法状态,放在一个数组里面,在递推的过程中复杂度就会大大降低。POJ 3254 Corn Fields codePOJ 3311 Hie with the Pie codeHDU 4539 郑厂长系列故事――排兵布阵 c原创 2013-04-19 17:09:11 · 2437 阅读 · 0 评论 -
POJ 1038 Bugs Integrated, Inc. 三进制压缩DP
黑书经典例题,做法与黑书的思想一样,我这里就不多加解释#include #include #include #include using namespace std;int n, m, k;int g[155][13];int dp[2][180000];int cst[11];int max(int a, int b) { return a > b ? a : b; }i原创 2013-04-19 17:07:28 · 1438 阅读 · 0 评论 -
POJ 3311 状态压缩DP简单题
#include #include #include using namespace std;const int mod = 100000000;int n, m, M;int state[400], tot;int a[15];bool f[400][400];int dp[13][400];void add(int &a, int b) { a += b; if(a >原创 2013-04-19 16:51:24 · 1671 阅读 · 1 评论 -
SGU 131 贴地砖类型 状态压缩DP
用dp[i][j]表示要贴第i层时,第i-1层的状态, 然后每一层dfs枚举一下情况即可dfs(x, y, pre, now) x层数 y枚举的当前列 pre 前一层状态, now当前层状态根据当前列y的这位上pre和now状态,确定要贴的图形,注意贴的时候now层必须要有占一个位置,还要注意贴完以后pre层必须满状态。1.在贴的过程中处理必须优先把pre层贴满。2.或原创 2013-04-04 13:01:05 · 1958 阅读 · 0 评论 -
ZOJ 3471 Most Powerful 状态压缩DP
#include #include using namespace std;int map[15][15];int cst[11]={1,2,4,8,16,32,64,128,256,512,1024};int dp[1200];int Max(int x,int y){ return x>y?x:y;}int main(){ int n,i,j,k,ans; whil原创 2013-04-19 17:01:07 · 1503 阅读 · 0 评论 -
POJ 2288 Islands and Bridges 状态压缩DP
#include #include #include using namespace std;#define LL long longint n, m;int v[14];int map[14][14];int dp[8200][14][14];LL cnt[8200][14][14];int main() { int i, j, k, x, cas; scanf("%d"原创 2013-04-19 16:58:58 · 1284 阅读 · 0 评论 -
HDU 3001 Travelling 状态压缩DP简单题
#include #include #include using namespace std;const int inf = 1000000009;int map[13][13];int cst[13];int f[60004][13];int dp[60004][13];int n, m;void init() { int i, j; cst[0] = 1; for(i原创 2013-04-19 16:57:30 · 1437 阅读 · 0 评论 -
POJ 1185 炮兵阵地 状态压缩DP简单题
#include #include #include using namespace std;int state[70], tot;int cnt[70];int dp[103][66][66];int n, m, M;void init() { M = (1<<m); int i, j; for(i = 0; i < M; i++) { if(i&(i>>1)) con原创 2013-04-19 16:55:05 · 1328 阅读 · 0 评论 -
HDU 4539 状态压缩DP简单题
#include #include #include using namespace std;int n, m, M;int state[177], tot;int cnt[177];int dp[103][177][177];bool f1[177][177], f2[177][177];bool ok1(int a, int b) { if((state[a]<<1)&st原创 2013-04-19 16:52:34 · 1608 阅读 · 0 评论 -
POJ 2411 Mondriaan's Dream 贴砖块类状态压缩DP入门
#include #include #include using namespace std;#define LL long longint n, m;LL dp[13][2666];LL cnt;int x, M;void dfs(int y, int pre, int now) { if(y == m) { if(pre == M-1) { dp[x+1][now原创 2013-04-19 17:03:01 · 1615 阅读 · 0 评论 -
Codeforces DP第三弹
基本都是div2的D,E题比赛链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=43325#overview1 / 10Problem ACodeForces 132CLogo Turtle1 / 5Problem BCodeForces 8CLooking for原创 2014-04-03 11:48:38 · 1288 阅读 · 2 评论