【状态压缩dp】bzoj1087 互不侵犯
来源:互联网 发布:td_lte是什么网络 编辑:程序博客网 时间:2024/05/21 08:58
马上就要在bzoj上切掉30道水题啦~大家共同进步~
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1087
题目大意:求在N*N(N≤9)的棋盘上放K个互不攻击的国王的方案数
果断dp,dp[i][j][k]代表前i行放k个国王,前一行放的格式为j(j为二进制数),的方案数,转移的时候要判断是否有国王互相攻击
设本行要放的方案为p,如果(p and j)、(p and (j/2))、(p and (j*2))均为0,那么不会互相攻击,但是注意下每行中不能连续放置两个国王,否则也会互相攻击的~(我会说我因为这个WA了一次吗= =)
#include <iostream>#define ll long longusing namespace std;ll dp[20][1000][100];int c[1000];bool b[1000];int js[20];int main(){ int n,m; cin >> n >> m; js[1] = 1; for(int i = 2;i <= 12;i ++) js[i] = js[i-1] * 2; for(int i = 1;i <= 12;i ++) for(int j = 1;j <= js[n+1]-1;j ++) if((js[i]&j)) { c[j] ++; if((j&js[i+1])) b[j] = 1; } for(int i = 0;i <= js[n+1]-1;i ++) if(!b[i]) dp[1][i][c[i]] = 1; for(int k = 1;k < n;k ++) for(int i = 0;i < js[n+1];i ++) for(int j = 0;j < js[n+1];j ++) if(!(i&j) && !((i/2)&j) && !((i*2)&j) && !b[j]) for(int l = 0;l <= m;l ++) dp[k+1][j][l+c[j]] += dp[k][i][l]; ll ans = 0; for(int i = 0;i <= js[n+1]-1;i ++) ans += dp[n][i][m]; cout << ans << endl; return 0;}
0 0
- 【状态压缩dp】bzoj1087 互不侵犯
- [bzoj1087][scoi2005][DP][状态压缩]互不侵犯King
- 【bzoj1087】互不侵犯King 状态压缩dp
- BZOJ1087 [SCOI2005]互不侵犯King 状态压缩DP
- bzoj1087: [SCOI2005]互不侵犯King(状态压缩+Dp)
- 【状态压缩DP】互不侵犯
- 【状态压缩DP】互不侵犯
- bzoj1087(状态压缩dp)
- [BZOJ1087]SCOI2005互不侵犯|状压DP
- 【BZOJ1087】【codevs2451】互不侵犯,状压DP
- <洛谷P1896互不侵犯>(状态压缩DP)
- BZOJ 1087 互不侵犯King 状态压缩DP
- 【BZOJ1087】【SCOI2005】互不侵犯King 状态压缩 动态规划 水题 都不用加特技
- bzoj1087: [SCOI2005]互不侵犯King 压状dp
- 【BZOJ1087】【SCOI2005】【互不侵犯king】【状压dp】
- 【bzoj1087】[SCOI2005]互不侵犯King 状压DP
- [BZOJ1087][SCOI2005]互不侵犯King(状压dp)
- BZOJ1087: [SCOI2005]互不侵犯King 状压DP
- 简单搞定listview下拉加载更多
- MyBatis入门07--实现sql动态模糊查询
- UE4移动平台上基于物理的着色
- 编程基础之二分查找 06:月度开销 (二分,使区间和最小)
- CYC - 强制转成横屏的方式
- 【状态压缩dp】bzoj1087 互不侵犯
- Dubbo框架应用之(四)--Dubbo基于Zookeeper实现分布式实例
- 0 java连接数据库
- ZOJ.3336 Friend Number II【有点水】 2015/10/09
- 杭电 acm 2015(偶数求和)
- 使用BeanUtils.populate方法转化Map为Javabean时get与set方法的命名规则
- SIGGRAPH 2013 Course: Physically Based Shading in Theory and Practice
- CoreData:数据持久化
- IEEE browse top 10