SCOI2005互不侵犯King
1087: [SCOI2005]互不侵犯King
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 1499 Solved: 872
[Submit][Status]
Description
在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。
Input
只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N)
Output
方案数。
Sample Input
Sample Output
HINT
Source
题解:
终于A了这道题。。。
其实意识到对安放的国王总个数有限制,那就应该是DP了
又因为是在棋盘上,所以以每行为状态进行转移
又因为n很小,所以状压DP。。。
主要是做一些预处理
代码:
var tot,n,i,j1,j2,j,k,l:longint;
s:ansistring;
ans:int64;
a:array[..,..] of boolean;
f:array[..,..,..] of longint;
can:array[..] of boolean;
calc:array[..] of longint;
function check(x,y:longint):boolean;
var s1,s2:ansistring;
i:longint;
begin
s1:=binstr(x,n);
s2:=binstr(y,n);
for i:= to n do
if (s1[i]='') and ((s2[i-]='') or (s2[i]='') or (s2[i+]='')) then exit(false);
exit(true);
end;
function cann(x:longint):boolean;
var s:ansistring;
i:longint;
begin
s:=binstr(x,n);
for i:= to n do if (s[i]='') and (s[i]=s[i-]) then exit(false);
exit(true);
end; procedure init;
begin
readln(n,k);
tot:=<<n-;
for i:= to tot do
begin
calc[i]:=;
s:=binstr(i,n);
for j:= to n do if s[j]='' then inc(calc[i]);
end;
fillchar(f,sizeof(f),);
for i:= to tot do f[,i,calc[i]]:=;
for i:= to tot do
if cann(i) then can[i]:=true;
for i:= to tot do
if can[i] then
for j:= to tot do
if can[j] then
if check(i,j) then a[i,j]:=true;
//for i:= to tot do writeln(can[i],' ',calc[i]);
end;
procedure main;
begin
for i:= to n do
for j1:= to tot do
if can[j1] then
for l:=calc[j1] to k do
for j2:= to tot do
if (can[j2]) and (a[j1,j2]) then
inc(f[i,j1,l],f[i-,j2,l-calc[j1]]);
// for i:= to n do
// for j:= to tot do
// for l:= to n do writeln(f[i,j,l]);
ans:=;
for i:= to tot do if can[i] then inc(ans,f[n,i,k]);
writeln(ans);
end;
begin
assign(input,'input.txt');assign(output,'output.txt');
reset(input);rewrite(output);
init;
main;
close(input);close(output);
end.
SCOI2005互不侵犯King的更多相关文章
- BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3336 Solved: 1936[Submit][ ...
- 洛谷1377 M国王 (SCOI2005互不侵犯King)
洛谷1377 M国王 (SCOI2005互不侵犯King) 本题地址:http://www.luogu.org/problem/show?pid=1377 题目描述 天天都是n皇后,多么无聊啊.我们来 ...
- 1087: [SCOI2005]互不侵犯King
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4276 Solved: 2471[Submit][ ...
- BZOJ1087 SCOI2005 互不侵犯King 【状压DP】
BZOJ1087 SCOI2005 互不侵犯King Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附 ...
- bzoj 1087 [SCOI2005]互不侵犯King 状态压缩dp
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Descripti ...
- 洛谷P1896 [SCOI2005]互不侵犯King
P1896 [SCOI2005]互不侵犯King 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共 ...
- BZOJ 1087:[SCOI2005]互不侵犯King(状压DP)
[SCOI2005]互不侵犯King [题目描述] 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子 ...
- [Bzoj1083][SCOI2005]互不侵犯king(状压dp)
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4595 Solved: 2664[Submit][ ...
- [bzoj1087][scoi2005]互不侵犯king
题目大意 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上 左下右上右下八个方向上附近的各一个格子,共8个格子. 思路 首先,搜索可以放弃,因为这是一 ...
随机推荐
- 02_setter注入
工程截图如下 [HelloWorld.java] package com.HigginCui; public class HelloWorld { private String words; publ ...
- fsockopen/curl/file_get_contents效率比较
前面小节 PHP抓取网络数据的6种常见方法 谈到了 fsockopen,curl与file_get_contents 的使用方法,虽然它们都能达到同一个使用目的,但是它们之间又有什么区别呢? 先谈谈c ...
- Linux内核Radix Tree(二)
1. 并发技术 由于需要页高速缓存是全局的,各进程不停的访问,必须要考虑其并发性能,单纯的对一棵树使用锁导致的大量争用是不能满足速度需要的,Linux中是在遍历树的时候采用一种RCU技术,来实现同 ...
- 遍历 TextBox控件
foreach (System.Windows.Forms.Control control in this.Controls) { if (control is System.Windows.Form ...
- win7 64 安装Oracle 11G 、使用PLSQL进行连接 标准实践
第一步: 安装oracle 服务,两个解压包,分别解压后 合并到一个文件夹,点击exe安装 (安装过程中如遇到PATH问题,直接忽略即可) 第二步:使用SQLPlus 测试是否成功 安装成功:CMD ...
- 创建一个cocos2d-x工程添加一个自定义Scene并显示
#include "cocos2d.h" class RunScene :public cocos2d::CCLayer { public: virtual bool init() ...
- 星级评论jq
html结构 <div class="list_item"> <span>商品包装满意度:</span> <b class="s ...
- Linux下GPIO驱动(二) ----s3c_gpio_cfgpin();gpio_set_value();
首先来看s3c_gpio_cfgpin(); int s3c_gpio_cfgpin(unsigned int pin, unsigned int config) { struct s3c_gpio_ ...
- git fork同步原作者
从github上获取源代码,一种是直接下载,但是无法改动后提交. 一种是fork一下,但是和原作者同步麻烦. 所以我找到了四个命令,解决同步问题. 以后建议大家fork一下,主要是哪天对源码熟悉了,想 ...
- PL/SQL — 隐式游标
一.隐式游标的定义及其属性 定义 隐式游标由系统自动定义,非显示定义游标的DML语句即被赋予隐式游标属性.其过程由oracle控制,完全自动化.隐式游标的名称是SQL,不能对SQL游标显式地执行OPE ...