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列 ...
随机推荐
- eclipse4.2.1插件安装(二)之Eclipse HTML Editor
编辑一些页面文件,例如JSP,HTML,JS等,直接用内置的文本编辑器基本比较疯狂,自己选了一个顺手的编辑器,Eclipse HTML Editor! Eclipse HTML编辑器插件主要提供以下功 ...
- 第33条:用EnumMap代替序数索引
有时候,会见到利用ordinal方法来索引数组的代码.例如下面这个简化的类,表示一种烹饪用的香草: public class Herb { public enum Type { ANNUAL, PER ...
- Struts2文件下载浅析
Struts2极大的简化了文件上传和下载,本文将主要介绍一下Struts2文件下载的实现1.功能主要是,在下载页面点击下载后,则下载相应的文件 2.代码部分jsp页面downloadPage:< ...
- read/write数据读写传输方式(转)
前言 笔者本打算撰写一篇讲解标准I/O(缓存I/O)的博文,但是发现已经有网友做过同样的工作,并且工作质量上乘,特转载于此. 原文地址http://lenky.info/archives/2012/0 ...
- C# partial 说明
1. 什么是局部类型? C# 2.0 引入了局部类型的概念.局部类型允许我们将一个类.结构或接口分成几个部分,分别实现在几个不同的.cs文件中. 局部类型适用于以下情况: (1) 类型特别大,不宜放在 ...
- oracle创建job方法
oracle创建job方法 alter system enable restricted session;--创建表create table G_TEST ( ID NUMBER(12), ...
- 电脑升级完Xcode8后 注释快捷键无效的问题
1.部分电脑升级完Xcode8 后直接重启电脑就可以使用Command +/ 快捷键注释代码, 2.如果上述方法没有效果,可以在终端输入sudo /usr/libexec/xpccachectl 然 ...
- 如何在Exe和BPL插件中实现公共变量共享及窗口溶入技术Demo源码
如何在Exe和BPL插件中实现公共变量共享及窗口溶入技术Demo源码 1.Delphi编译方式介绍: 当我们在开发一个常规应用程序时,Delphi可以让我们用两种方式使用VCL,一种是把VCL中的申明 ...
- NetBeans8 类编缉器及控制台中文乱码解决
1.类编辑器中文乱码的解决: 工具-->选项-->字体和颜色-->"语法"选项卡:右侧选择字体的地方设置一个支持中文的字体,如宋体.新宋体.微软雅黑等 2.控制台 ...
- 2014年度辛星html教程夏季版第八节
经过前面七节的学习,我感觉大家的HTML的功底也差不多了,而且我特别的删去了某些东西,比如框架,如果回到几年前,那么框架是非常流行的,但是现在都到了2014年了,这些东西早就该被遗忘了,因此,我果断的 ...