04 2013 档案

摘要:状态方程为dp[i][s]=dp[i-1][s']+dp[i-1][s] (sum[s]<i)或dp[i][s]=dp[i-1][s'] (sum[s]==i)如果s与base矛盾,则s'必须含有s与base矛盾的项。(其中i为第几行,s为状态,s'为是的子状态,base数组记录棋盘状态('.'为1,'#'为0),sum[s]记录s中1的个数)View Code #include<iostream>#include<cstdio>#include<string.h>using namesp 阅读全文
posted @ 2013-04-25 22:15 longlongago 阅读(181) 评论(0) 推荐(0)
摘要:具体做法可参照Matrix67大牛的博客http://www.matrix67.com/blog/archives/266View Code #include<cstdio>#include<string.h>#include<iostream>using namespace std;int up,n,k,sum;void test(int row,int ld,int rd,int cnt,int now){ if(now>n) return; if(cnt<k) { int pos=up&(~(ld|rd|row)); int p; 阅读全文
posted @ 2013-04-25 00:08 longlongago 阅读(139) 评论(0) 推荐(0)
摘要:状态压缩DP具体可参考周伟的《状态压缩》。状态方程可列为dp[i][s]=dp[i-1][s']+dp[i-1][s] (sum[s]+1<=i)或者dp[i][s]=dp[i-1][s'] sum[s]==i其中i表示第几行 s表示状态 s'表示s的子状态#include<cstdio>#include<iostream>#include<string.h>using namespace std;const int maxn=1<<11;int state[maxn],sum[maxn];int dp[11][ma 阅读全文
posted @ 2013-04-24 00:54 longlongago 阅读(225) 评论(0) 推荐(0)