[BZOJ1087][SCOI2005]互不侵犯King解题报告|状压DP
在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。
好像若干月前非常Naive地去写过DFS...
然后其实作为状压DP是一道非常好的题啦><
感觉直接无脑搞时间是下不来的 做了好几道预处理
使得最后DP的过程中没有任何一条转移是无用的
program bzoj1087;
var i,x,n,k,j,p,q,t1,t2:longint;
ans:int64;
a:array[-..]of longint;
b:array[-..,-..]of longint;
c:array[-..,-..]of longint;
f:array[..,-..,-..]of int64; function check(x:longint):boolean;
var las:longint;
begin
las:=;
while x<> do
begin
if (x and =)and(las=) then exit(false);
las:=x and ;
x:=x >> ;
end;
exit(true);
end; function count(x:longint):longint;
var tem:longint;
begin
tem:=;
while x<> do
begin
inc(tem,x and );
x:=x >> ;
end;
exit(tem);
end; function ok(x,y:longint):boolean;
var i:longint;
tmp:array[..,-..]of longint;
begin
for i:= downto do tmp[,i]:=x >> i and ;
for i:= downto do tmp[,i]:=y >> i and ;
for i:= to do if (tmp[,i]+tmp[,i]=)or(tmp[,i]+tmp[,i-]=)or(tmp[,i]+tmp[,i+]=) then exit(false);
exit(true);
end; begin
fillchar(b,sizeof(b),);
fillchar(a,sizeof(a),);
fillchar(c,sizeof(c),);
readln(n,k);
for i:= to << n- do if check(i) then
begin
x:=count(i);
inc(b[x,]);b[x,b[x,]]:=i;
inc(a[]);a[a[]]:=i;
end;
for i:= to a[] do
for j:= to a[] do if ok(a[i],a[j]) then begin inc(c[a[i],]);c[a[i],c[a[i],]]:=a[j];end;
fillchar(f,sizeof(f),);
for i:= to k do
for j:= to b[i,] do f[,i,b[i,j]]:=;
for i:= to n do
begin
f[]:=f[];
fillchar(f[],sizeof(f[]),);
for j:= to k do
for p:= to (n+) >> do if p<=j then
begin
q:=j-p;
for t1:= to b[p,] do
for t2:= to c[b[p,t1],] do inc(f[,j,b[p,t1]],f[,q,c[b[p,t1],t2]]);
end;
end;
ans:=;
for i:= to a[] do inc(ans,f[,k,a[i]]);
writeln(ans);
end.
[BZOJ1087][SCOI2005]互不侵犯King解题报告|状压DP的更多相关文章
- BZOJ1087 SCOI2005 互不侵犯King 【状压DP】
BZOJ1087 SCOI2005 互不侵犯King Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附 ...
- 状压入门--bzoj1087: [SCOI2005]互不侵犯King【状压dp】
Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上 左下右上右下八个方向上附近的各一个格子,共8个格子. Input 只有一行, ...
- [BZOJ1087] [SCOI2005] 互不侵犯King (状压dp)
Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. Input 只有一行,包 ...
- bzoj1087: [SCOI2005]互不侵犯King (codevs2451) 状压dp
唔...今天学了状压就练练手... 点我看题 这题的话,我感觉算是入门题了QAQ... 然而我还是想了好久... 大致自己推出了方程,但是一直挂,调了很久选择了题解 坚持不懈的努力的调代码. 然后发现 ...
- [bzoj1087][scoi2005]互不侵犯king
题目大意 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上 左下右上右下八个方向上附近的各一个格子,共8个格子. 思路 首先,搜索可以放弃,因为这是一 ...
- BZOJ1087 [SCOI2005]互不侵犯King 状态压缩动态规划
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1087 题意概括 在n*n的棋盘上面放k个国王,使得他们互相无法攻击,问有多少种摆法. 题解 dp[ ...
- [BZOJ1076][SCOI2008]奖励关解题报告|状压DP
你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝 ...
- BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3336 Solved: 1936[Submit][ ...
- BZOJ 1087:[SCOI2005]互不侵犯King(状压DP)
[SCOI2005]互不侵犯King [题目描述] 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子 ...
随机推荐
- 导弹拦截与Dilworth定理
这两天被Dilworth.链和反链搞到头昏脑胀,终于有点眉目,现在来总结一下. Dilworth定理说的是:对于一个偏序集,其最少链划分数等于其最长反链的长度. Dilworth定理的对偶定理说的是: ...
- iOS- 无处不在,详解iOS集成第三方登录(SSO授权登录<无需密码>)
1.前言 不多说,第三登录无处不在!必备技能,今天以新浪微博为例. 这是上次写的iOS第三方社交分享:http://www.cnblogs.com/qingche/p/3727559.html 可 ...
- Node js路由
/* 要为程序提供请求的 URL 和其他需要的 GET 及 POST 参数,随后程序需要根据这些数据来执行相应的代码. 因此,需要查看 HTTP 请求,从中提取出请求的 URL 以及 GET/POST ...
- linux路由表的配置
linux路由表的配置 一.原理说明 1.路由表(table)从0到255进行编号,每个编号可以对应一个别名,编号和别名的对应关系在linux下放在/etc/iproute2/rt_tables这个文 ...
- SpringBoot2.0(一) mybatis
使用mybatis springboot使用mybatis主要依赖 mybatis-spring-boot-starter 来实现.其提供了2中解决方案,一种是使用注解:另一种是简化后的传统的xml方 ...
- Go语言【第十四篇】:Go语言基础总结
Go语言类型转换 类型转换用于将一种数据类型的变量转换为另外一种类型的变量,Go语言类型转换基本格式如下: type_name(expression) type_name为类型,expression为 ...
- Spring-Boot基于配置按条件装Bean
背景 同一个接口有多种实现,项目启动时按某种规则来选择性的启用其中一种实现,再具体一点,比如Controller初始化的时候,根据配置文件的指定的实现类前缀,来记载具体Service,不同Servic ...
- BZOJ1412 [ZJOI2009]狼和羊的故事 【最小割】
1412: [ZJOI2009]狼和羊的故事 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 3454 Solved: 1733 [Submit][ ...
- 洛谷 P4964 绫小路的特别考试 解题报告
P4964 绫小路的特别考试 题目背景 这世界上「胜利」便是一切.无关乎过程. 要付出多少牺牲都无所谓.只要最后我「胜出」那就行了. 题目描述 一场新的特别考试来临了,这次的考试内容是(wan e d ...
- bzoj4321: queue2(DP)
woc万能的OEIS大法!这题居然是有递推式的QAQ http://oeis.org/A002464 这题的状态想不出来T^T... f[i][j][0/1]表示前i个编号,有j对相邻的编号位置上相邻 ...