bzoj 1087 互不侵犯king 状压DP
来源:互联网 发布:淘宝店铺扣满48分 编辑:程序博客网 时间:2024/05/01 04:46
题目描述
在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上
左下右上右下八个方向上附近的各一个格子,共8个格子。
思路
状压DP,我原本想的是暴力搜索打表,毕竟数据范围那么小,后来发现这个是一行一行推下去,意识到是状压DP。
代码
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>#include<vector> using namespace std;int n,m,k,stay[101],cnt[101];long long ans,dp[10][101][101];//行,王,状态 bool map[101][101];void dfs(int p,int put,int num){ stay[++m]=num; cnt[m]=p; if(p>=k||p>=(n+1)/2)return; for(int i=put+2;i<=n;i++) dfs(p+1,i,num+(1<<(i-1)));}//枚举出在一行上放马的所有合法状态int main(){ scanf("%d%d",&n,&k); m=0; dfs(0,-1,0); for(int i=1;i<=m;i++) for(int j=1;j<=m;j++) map[i][j]=map[j][i]=((stay[i]&stay[j])||((stay[i]<<1)&stay[j])||((stay[i]>>1)&stay[j]))?0:1; for(int i=1;i<=m;i++) dp[1][cnt[i]][i]=1ll; for(int i=2;i<=n;i++) for(int j=0;j<=k;j++) for(int now=1;now<=m;now++) { if(cnt[now]>j)continue; for (int l=1;l<=m;l++) if (map[now][l]&&cnt[l]+cnt[now]<=j) dp[i][j][now]+=dp[i-1][j-cnt[now]][l]; } ans=0; for(int i=1;i<=m;i++)ans+=dp[n][k][i]; printf("%lld\n",ans); return 0;}
阅读全文
2 0
- BZOJ 1087 SCOI2005 互不侵犯King 状压DP
- bzoj 1087: [SCOI2005]互不侵犯King 状压dp
- 【bzoj 1087】[SCOI2005]互不侵犯King 状压dp
- bzoj 1087 [SCOI2005]互不侵犯King 状压dp
- bzoj 1087 互不侵犯king 状压DP
- BZOJ 1087-互不侵犯King(状压DP)
- BZOJ 1087 互不侵犯King (状压dp)
- 【BZOJ】1087 [SCOI2005]互不侵犯King 状压DP
- bzoj 1087: [SCOI2005]互不侵犯King 状压dp
- BZOJ 1087 SCOI 2005 互不侵犯King 状压DP
- BZOJ 1087 [SCOI 2005] 互不侵犯的king (状压DP)
- 【状压dp】【bzoj 1087】【SCOI 2005】互不侵犯King
- BZOJ-1087 互不侵犯King 状压DP+DFS预处理
- 【bzoj 1087】[SCOI2005]互不侵犯King(状压dp)
- 【BZOJ 1087】【SCOI 2005】互不侵犯King 【状压DP】
- BZOJ 1087: [SCOI2005]互不侵犯King 预处理,状压DP
- BZOJ 1087 互不侵犯King 状态压缩DP
- 【BZOJ】1087 互不侵犯King
- F1V3.0-图形-前端绘图库简介
- boost::function的用法(一)
- chrome解决跨域(CORS)问题---chrome插件
- Java并发编程与技术内幕:线程池深入理解
- ALS推荐系统实战
- bzoj 1087 互不侵犯king 状压DP
- Activity的启动模式
- 后台向模板中分配变量不显示
- 操作系统实验七之有限缓冲问题
- caffe中 cifar10案例(四)可视化loss和accurary曲线
- Eclipse中的各种页面变量高亮显示总结
- 菜鸟 纯属笔记
- Hibernate4中使用getCurrentSession报Could not obtain transaction-synchronized Session for current thread
- 在awk中正确使用close避免文件句柄泄露