bzoj3294
感觉自己就是不怎么擅长计数的问题
设f[k,i,j]表示前k种颜色占据了i行j列的方案
g[k,i,j]表示第k种颜色占据了i行j列的方案,注意要减去并没占据满i行j列的情况
然后转移就很好写了
像这种题目构造好了状态后都非常好解决
const mo=;
var g,f:array[..,..,..] of longint;
c:array[..,..] of longint;
a:array[..] of longint;
n,m,i,j,k,q,x,y,ans:longint; begin
readln(n,m,q);
c[,]:=;
for i:= to n*m do
begin
c[i,]:=;
for j:= to i do
c[i,j]:=(c[i-,j]+c[i-,j-]) mod mo;
end;
for i:= to q do
read(a[i]);
for k:= to q do
for i:= to n do
for j:= to m do
begin
if (i*j<a[k]) or (i>a[k]) or (j>a[k]) then continue;
g[k,i,j]:=c[i*j,a[k]];
for x:= to i do
for y:= to j do
if (i-x+j-y)> then
g[k,i,j]:=(g[k,i,j]-int64(g[k,x,y])*int64(c[i,x]) mod mo*int64(c[j,y]) mod mo+mo) mod mo;
end; f[,,]:=;
for k:= to q do
begin
a[k]:=a[k]+a[k-];
for i:= to n do
for j:= to m do
begin
if i*j<a[k] then continue;
for x:= to i do
for y:= to j do
f[k,i,j]:=(f[k,i,j]+int64(f[k-,i-x,j-y])*int64(g[k,x,y]) mod mo*int64(c[i,x]) mod mo*int64(c[j,y]) mod mo) mod mo;
end;
end;
for i:= to n do
for j:= to m do
ans:=(ans+int64(f[q,i,j])*int64(c[n,i]) mod mo*int64(c[m,j]) mod mo) mod mo; writeln(ans);
end.
bzoj3294的更多相关文章
- BZOJ3294 CQOI2011放棋子(动态规划)
可以看做棋子放在某个位置后该种颜色就占领了那一行一列.行列间彼此没有区别. 于是可以设f[i][j][k]表示前k种棋子占领了i行j列的方案数.转移时枚举第k种棋子占领几行几列.注意行列间是有序的,要 ...
- 【BZOJ3294】放棋子(动态规划,容斥,组合数学)
[BZOJ3294]放棋子(动态规划,容斥,组合数学) 题面 BZOJ 洛谷 题解 如果某一行某一列被某一种颜色给占了,那么在考虑其他行的时候可以直接把这些行和这些列给丢掉. 那么我们就可以写出一个\ ...
- BZOJ3294: [Cqoi2011]放棋子
Description Input 输入第一行为两个整数n, m, c,即行数.列数和棋子的颜色数.第二行包含c个正整数,即每个颜色的棋子数.所有颜色的棋子总数保证不超过nm. Output 输出 ...
- bzoj3294[Cqoi2011]放棋子 dp+组合+容斥
3294: [Cqoi2011]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 755 Solved: 294[Submit][Status] ...
- bzoj千题计划261:bzoj3294: [Cqoi2011]放棋子
http://www.lydsy.com/JudgeOnline/problem.php?id=3294 如果一个颜色的棋子放在了第i行第j列,那这种颜色就会占据第i行第j列,其他颜色不能往这儿放 设 ...
- 【BZOJ3294/洛谷3158】[CQOI2011]放棋子(组合数+DP)
题目: 洛谷3158 分析: 某OIer兔崽子的此题代码中的三个函数名:dfs.ddfs.dddfs(充满毒瘤的气息 显然,行与行之间.列与列之间是互相独立的.考虑背包,用\(f[k][i][j]\) ...
- BZOJ3294: [Cqoi2011]放棋子(计数Dp,组合数学)
题目链接 解题思路: 发现一个性质,如果考虑一个合法的方案可以将行和列都压到一起,也就是说,在占用行数和列数一定的情况下,行列互换是不会影响答案的,那么考虑使用如下方程: $f[i][j][k]$为占 ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
随机推荐
- C# 学习之旅(3) --- 会说话的简易计算器
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- N皇后摆放问题
Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上. 你的任务是,对于给定的N,求出有多少种 ...
- go语言使用redis —— redigo
redis的client有好多好多,go语言的client在redis官方有两个推荐,radix和redigo.选择哪一个好呢?确实很纠结,后来掷硬币决定选择redigo了. redis.go.red ...
- mybatis generator自动生成 实体类, sqlmap配置文件 详细介绍
我使用的是Eclipse Luna 装了自己常用的插件, generator也是其中一个推荐下载 MyBatis_Generator_1.3.1.zip离线安装包 <?xml version=& ...
- ashx与验证码
using System; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; us ...
- 滚珠菜单动效-b
原型从网上找的,动效使用了CAAnimation和UIDynamic物理引擎. gitHub :https://github.com/BearRan/FlowMenuAnimation 大致步骤如 ...
- hibernate简介(Session,几种状态,方法······等)
1.Hibernate是什么? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数 ...
- [Jquery] js验证手机号
function checkIdPhone(id,idErr){ var reg0=/^(13[0-9]|15[012356789]|18[01235,idErr6789]|14[57]|17[0]) ...
- encodeURIComponent()编码和decodeURIComponent()解码
html1: <!DOCTYPE HTML> <meta charset=utf-8> <meta http-equiv="X-UA-Compatible&qu ...
- Titan DB的一些问题
使用熟悉一点的系统来测试TitanDB,HBASE+ES,记录下来一些小tips. 1.首先TitanDB支持的Hadoop只有1.2.1,所以Hbase自然也只能取到0.98,虽然官网上提供了tit ...