【Luogu】P1896互不侵犯King(状压DP)
题目链接
真是可恶,被数据范围坑了一把。想要一遍AC的希望破灭了……
以后大家在做状压DP的时候一定要开long long……
设f[i][j][k]表示考虑前i行,总共放了j个King,第i行状态为k时的方案数。
先统计出k的二进制位有多少1,记为len,然后枚举o(1~(1<<n)-1),则状态转移方程有:
f[i][j][l]+=f[i-1][j-len][o];
注意判断两个状态是否合法。
j&(j>>1)不行,o&j不行,(o>>1)&j不行,(o<<1)&j也不行。当然o&(o>>1)更不行。
最后累计答案。
代码如下
#include<cstdio> #include<cctype> inline long long read(){long long num=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}while(isdigit(ch)){num=num*10+ch-'0';ch=getchar();}return num*f; }long long f[10][101][600]; inline int getlen(long long x){int ans=0;bool s;while(x){if(x&1) ans++;x>>=1;}return ans; }long long Max; long long ans;inline bool check(long long x,long long y){if(x&y) return 1;if((x>>1)&y) return 1;if((x<<1)&y) return 1;return 0; }int main(){f[0][0][0]=1;int n=read(),k=read();Max=(1<<n)-1;for(int i=1;i<=n;++i)for(int j=0;j<=k;++j)for(int l=0;l<=Max;++l){int len=getlen(l);if(len>j) continue;if(l&(l>>1)) continue;for(int o=0;o<=Max;++o){if(check(o,l)) continue;if(o&(o>>1)) continue;f[i][j][l]+=f[i-1][j-len][o];}}for(int i=0;i<=Max;++i)ans+=f[n][k][i];printf("%lld",ans);return 0; }
转载于:https://www.cnblogs.com/cellular-automaton/p/7599864.html
【Luogu】P1896互不侵犯King(状压DP)相关推荐
- 洛谷P1896 互不侵犯【状压DP】
题目链接:P1896 互不侵犯 分析:普通的状压DP再多加一维记个数,然后找到能转移到当前的状态更新答案: #include<bits/stdc++.h> using namespace ...
- BZOJ 1087 SCOI2005 互不侵犯King 状压DP
题目大意:给定n*n的国际象棋棋盘.在上面放k个国王,要求国王之间互不攻击.求方案数 n<=⑨ 状压DP.将每一行的方案二进制压成一维,令f[i][j][k]为第i行用去j个国王状态为k的方案数 ...
- BZOJ 1087 [SCOI2005]互不侵犯King ——状压DP
[题目分析] 沉迷水题,吃枣药丸. [代码] #include <cstdio> #include <cstring> #include <iostream> #i ...
- 【洛谷 P1896】[SCOI2005]互不侵犯(状压dp)
题目链接 题意:在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 这是道状压\(DP\)好题啊.. ...
- 【BZOJ1087】【codevs2451】互不侵犯,状压DP
传送门1 传送门2 写在前面:第一次写状压DP,感觉还好,至少比数论好些,还有就是让我膜一发位运算-- 思路:一看数据范围n<=9而且是省选,就知道这个题九成是状态压缩,题目限制条件与上一行的摆 ...
- BZOJ 1087: [SCOI2005]互不侵犯King
二次联通门 : BZOJ 1087: [SCOI2005]互不侵犯King /*BZOJ 1087: [SCOI2005]互不侵犯King状压dp将每一行棋子的存在状态压成一个整数f[i][j][k] ...
- 刷题周记(九)——#状压DP:最短Hamilton路径、小国王(互不侵犯)、玉米田(Corn Fields G)、愤怒的小鸟、吃奶酪、炮兵阵地、宝藏 #区间DP:清空字符串#DP:关灯问题II
文章目录 --2020年12月20日(周日)------------------ 状压DP 一.最短Hamilton路径(模板题) 二.玉米田(P1879 [USACO06NOV]Corn Field ...
- poj3254/洛谷P1896 状压dp
http://poj.org/problem?id=3254 https://www.luogu.org/problemnew/show/P1896 把这两题放在一起,解题思路差不多.以POJ的为例 ...
- BZOJ 4042 Luogu P4757 [CERC2014]Parades (树形DP、状压DP)
题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=4042 (Luogu) https://www.luogu.org/prob ...
最新文章
- 杨百万建议股民可以从以下几个方面进行
- 配置apache虚拟host
- Linux命令行工具使用小贴士及技巧(四)
- top命令的使用查看进程占用
- pandas.DataFrame对根据某些列对某些列进行修改
- Linux云用户,Linux 用户与权限
- 聊聊论文分区,SCI,JCR,CCF分区你弄懂了吗?
- 10K 3435热敏电阻阻值表
- 90.精读《极客公园 2019》
- 2022智源大会议程公开 | 预训练大模型论坛
- 视频中的音频采样率就这样快速修改
- 杨慎的词------临江仙·滚滚长江东逝水
- img标签引入和背景图片引入雪碧图的使用
- 关于信息检索(IR)、搜索引擎的学与思
- 图文教程教您蓝底照片更换成白底和红底的方法
- 获取视频fps、总帧数
- activeMQ基础学习和SpringBoot整合activeMQ案例
- hash 算法 (转)
- Python PyQt4 文字朗读演示代码
- vivoxfold和华为matex2哪个值得买 两者配置对比