bzoj1801
题目就是每行每列最多放两个炮的意思;
首先不难想到状态压缩dp,但是当n,m<=100的时候显然会跪掉;
考虑每行最多就2个点,状压dp浪费了大量的空间
由于每行最多两个点,我们可以直接用f[i,j,k]表示状态到第i行放1个炮有j列,2个炮有k列
方程具体见程序
const re=; var f:array[..,..,..] of int64; i,j,n,p,k,m:longint; ans:int64; function c2(x:int64):int64; begin c2:=x*(x-) div mod re; end; begin readln(n,m); f[,,]:=; ans:=; p:=; for i:= to n do begin p:=-p; for j:= to m do for k:= to m-j do begin f[p,j,k]:=f[-p,j,k]; if j> then f[p,j,k]:=(f[p,j,k]+f[-p,j-,k]*(m-j-k+) mod re) mod re; if (k>) and (j<m) then f[p,j,k]:=(f[p,j,k]+f[-p,j+,k-]*(j+) mod re) mod re; if (j>) then f[p,j,k]:=(f[p,j,k]+f[-p,j-,k]*c2(m-j-k+) mod re) mod re; if (j>) and (k>) then f[p,j,k]:=(f[p,j,k]+f[-p,j,k-]*(m-j-k+)*j mod re) mod re; if (k>) and (j<m-) then f[p,j,k]:=(f[p,j,k]+f[-p,j+,k-]*c2(j+) mod re) mod re; end; end; for i:= to m do for j:= to m-i do ans:=(ans+f[p,i,j]) mod re; writeln(ans); end. const re=; var f:array[..,..,..] of int64;
i,j,n,p,k,m:longint;
ans:int64;
function c2(x:int64):int64;
begin
c2:=x*(x-) div mod re;
end; begin
readln(n,m);
f[,,]:=;
ans:=;
p:=;
for i:= to n do
begin
p:=-p;
for j:= to m do
for k:= to m-j do
begin
f[p,j,k]:=f[-p,j,k];
if j> then
f[p,j,k]:=(f[p,j,k]+f[-p,j-,k]*(m-j-k+) mod re) mod re;
if (k>) and (j<m) then
f[p,j,k]:=(f[p,j,k]+f[-p,j+,k-]*(j+) mod re) mod re;
if (j>) then
f[p,j,k]:=(f[p,j,k]+f[-p,j-,k]*c2(m-j-k+) mod re) mod re;
if (j>) and (k>) then
f[p,j,k]:=(f[p,j,k]+f[-p,j,k-]*(m-j-k+)*j mod re) mod re;
if (k>) and (j<m-) then
f[p,j,k]:=(f[p,j,k]+f[-p,j+,k-]*c2(j+) mod re) mod re;
end;
end;
for i:= to m do
for j:= to m-i do
ans:=(ans+f[p,i,j]) mod re;
writeln(ans);
end.
bzoj1801的更多相关文章
- 【BZOJ1801】【AHOI2009】中国象棋(动态规划)
[BZOJ1801][AHOI2009]中国象棋(动态规划) 题面 题目描述 这次小可可想解决的难题和中国象棋有关,在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个 ...
- BZOJ1801 [Ahoi2009]chess 中国象棋 动态规划
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1801 题意概括 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请 ...
- 【BZOJ1801】[Ahoi2009]chess 中国象棋 DP
[BZOJ1801][Ahoi2009]chess 中国象棋 Description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置方法,中国像棋中炮 ...
- BZOJ1801 Ahoi2009 chess 中国象棋 【DP+组合计数】*
BZOJ1801 Ahoi2009 chess 中国象棋 Description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置方法,中国像棋中炮的行 ...
- BZOJ1801:[Ahoi2009]chess 中国象棋
Time Limit: 10 Sec Memory Limit: 64 MB Description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置 ...
- bzoj1801[AHOI2009]CHESS中国象棋
题意:在棋盘上放一些炮使得它们不互相攻击.其实就是一行/一列最多放两个. 50分的数据中n,m至少有一个不超过8,比较直接的想法是对n/m中较小的一维做状态压缩,状态f[i][S1][S2]表示在前i ...
- [BZOJ1801][AHOI2009]中国象棋(递推)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1801 分析: 只会50的状态压缩…… 然后搜了下题解,发现是dp 首先易得每行每列至多 ...
- [luogu2051][bzoj1801][AHOI2009]chess中国象棋【动态规划】
题目描述 这次小可可想解决的难题和中国象棋有关,在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个炮,请问有多少种放置方法.大家肯定很清楚,在中国象棋中炮的行走方式是 ...
- bzoj1801: [Ahoi2009]chess 中国象棋 dp
题意:在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置方法,中国像棋中炮的行走方式大家应该很清楚吧. 题解:dp[i][j][k]表示到了第i行,有j列 ...
随机推荐
- Microsoft Word Regular Expression
Microsoft Word Regular Expression Word裏的正則表達式-不一樣的符號. 一.Normal Find and Replace 二.Search by using wi ...
- win2008 r2 远程桌面问题
今天去机房给三台服务器上架,装了2008 R2系统,客户要求从外面通过公网IP能够访问服务器桌面,三台服务器都安装了远程协助的功能,结果有两台能正常访问,另外一台始终连不上,不知道哪个地方设置有问题, ...
- gentoo装X服务器时显卡选择
前面装X服务器一直装不成功,每个步骤都按hand book上的进行,编译完成后,重启就是启动不了X服务器,最终才知道由于我是用的是 开源显卡nvidia,换成集成显卡inter后X启动成功,顺便说句, ...
- asp.net使用MVC4框架基于NPOI做导出数据到Excel表
NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 ...
- 最完美解决Nginx部署ThinkPHP项目的办法
网上通用解决方法的配置如下: server { ... location / { index index.htm index.html index.php; #访问路径的文件不存在则重写URL转交给T ...
- 如何读懂Oracle文档中的语法图(转)
本文转载自:http://kyle.xlau.org/posts/syntax-diagrams.html Oracle文档中用到了两种表达语法的方法,语法图和BNF. BNF, Backus-Nau ...
- android适应屏幕
生产android手机的厂商多不胜数,造就了android手机的屏幕尺寸也是不计其数.开发者为了使应用在各个品牌,各个型号的手机屏幕上保持一致的用户体验,就需要运用多种使应用的UI能适应不同屏幕尺寸的 ...
- C# 格式化字符串(转载)
1 前言 如果你熟悉Microsoft Foundation Classes(MFC)的CString,Windows Template Library(WTL)的CString或者Standard ...
- HBASE的安装
HBASE的安装: 安装的软件版本:hbase-0.98.4-hadoop2.tar.gz 下载链接:http://www.apache.org/dist/hbase/hbase-0.98.4/ 1. ...
- oracle 行转列问题
select id, name, ),),)) "imp_value", ),), )) "click_value" from (SELECT a.id, a. ...