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
阅读全文
摘要:具体做法可参照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;
阅读全文
摘要:状态压缩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
阅读全文

浙公网安备 33010602011771号