BZOJ 1087 SCOI 互不侵犯 状态DP
来源:互联网 发布:手机端如何查看源码 编辑:程序博客网 时间:2024/06/04 18:27
N的范围很小,一行可行的状态数也就90左右吧。
于是DP就好了。
由于预处理出了一行的所有可行状态,所以按行DP。
令
那么从上下两行兼容的状态转移过来就可以了。
因为王范围是3*3,所以简单位运算解决。
#include <cstdio>#define FOR(i,j,k) for(i=j;i<=k;i++)#define rep(i,j,k) for(i=j;i<k;i++)bool map[90][90];int available[90], tot = 0, digit[90];long long f[10][100][90], ans;inline bool judge(int x,int y) { return !((x&y)||(x<<1&y)||(x>>1&y));}int calc_digit(int x) { int s = 0; while(x) s += x & 1, x >>= 1; return s; } int main() { int i,j,k,l,n,m; scanf("%d%d", &n, &m); rep(i,0,(1<<n)) if(!((i<<1&i)||(i>>1&i))) available[tot++] = i; rep(i,0,tot) rep(j,0,tot) map[i][j] = judge(available[i],available[j]); rep(i,0,tot) digit[i] = calc_digit(available[i]); f[0][0][0]=1; FOR(i,1,n) FOR(j,0,m) rep(k,0,tot) if (digit[k] <= j) rep(l,0,tot) if (map[k][l] && digit[k] + digit[l] <= j) f[i][j][k] += f[i-1][j - digit[k]][l]; rep(i,0,tot) ans+=f[n][m][i]; printf("%lld", ans); return 0;}
1087: [SCOI2005]互不侵犯King
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 2433 Solved: 1433
[Submit][Status][Discuss]
Description
在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。
Input
只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N)
Output
方案数。
Sample Input
3 2
Sample Output
16
0 0
- BZOJ 1087 SCOI 互不侵犯 状态DP
- [BZOJ 1087][SCOI 2005] 互不侵犯King 状态压缩DP
- BZOJ 1087 SCOI 2005 互不侵犯King 状压DP
- BZOJ 1087 [SCOI 2005] 互不侵犯的king (状压DP)
- 【状压dp】【bzoj 1087】【SCOI 2005】互不侵犯King
- 【BZOJ 1087】【SCOI 2005】互不侵犯King 【状压DP】
- 互不侵犯 [Bzoj 1087,SCOI 2005]
- BZOJ 1087 互不侵犯King 状态压缩DP
- 【BZOJ 1087】【SCOI 2005】 互不侵犯King
- BZOJ 状态压缩dp 1087: [SCOI2005]互不侵犯King
- BZOJ题目1087: [SCOI2005]互不侵犯King(状态压缩DP)
- [BZOJ]1087: [SCOI2005]互不侵犯King 状态压缩DP
- [BZOJ 1087][SCOI2005]互不侵犯King:状态压缩DP
- BZOJ 1087 互不侵犯的国王 状态压缩dp
- 【状态压缩dp】【轮廓线dp】【互不侵犯King】【HYSBZ】【BZOJ】【1087】
- BZOJ 1087 SCOI2005 互不侵犯King 状压DP
- bzoj 1087: [SCOI2005]互不侵犯King 状压dp
- 【bzoj 1087】[SCOI2005]互不侵犯King 状压dp
- 设计模式之代理模式(Proxy)
- POJ2251 Dungeon Master
- 找唯一数
- 跨平台C++服务器程序开发 (3)Linux文件描述符
- 利用Swagger Maven Plugin生成Rest API文档
- BZOJ 1087 SCOI 互不侵犯 状态DP
- Android控件架构与view,viewgroup的测量和绘制
- 函数表达式和闭包
- 用REST获得openvswitch ovsdb的信息
- js闭包
- Please ensure that adb is correctly located at……问题解决方案
- iOS中的事件传递和响应者链条
- Android 应用界面开发笔记
- WebView加载进度Progress的显示