[luoguP1896] [SCOI2005]互不侵犯King(状压DP)
传送门
先预处理出来一行中放置国王的所有情况和每种情况所用的国王个数。
f[i][j][k]表示前i行放j个国王且最后一行的状态为k的方案数
状压DP即可
#include <cstdio> #define N 1001 int n, m, cnt, ans; int a[N][2], f[10][82][N]; inline void dfs(int s, int k, int last) inline bool check(int x, int y) int main() dfs(0, 0, 0); f[0][0][1] = 1; for(i = 1; i <= n; i++) for(j = 0; j <= m; j++) for(k = 1; k <= cnt; k++) for(l = 1; l <= cnt; l++) if(j + a[l][1] <= m && check(k, l)) f[i][j + a[l][1]][l] += f[i 1][j][k]; for(i = 1; i <= cnt; i++) ans += f[n][m][i]; printf("%d\n", ans); return 0; }
下一篇:2017_7台风套题
DP
spc文件怎么看,spc文件用什么打开?
0文件怎么看,0文件用什么打开?
sparseimage文件怎么看,sparseimage文件用什么打开?
sp文件怎么看,sp文件用什么打开?
dv文件怎么看,dv文件用什么打开?
soundpack文件怎么看,soundpack文件用什么打开?
dus文件怎么看,dus文件用什么打开?
dtw文件怎么看,dtw文件用什么打开?
spdf文件怎么看,spdf文件用什么打开?
0文件怎么看,0文件用什么打开?