bzoj千题计划261:bzoj3294: [Cqoi2011]放棋子
http://www.lydsy.com/JudgeOnline/problem.php?id=3294
如果一个颜色的棋子放在了第i行第j列,那这种颜色就会占据第i行第j列,其他颜色不能往这儿放
设第k种颜色的棋子有a[k]个
令g[k][i][j] 表示第k种颜色的棋子,恰好占据i行j列的方案数
g[k][i][j]=C(i*j,a[k])-Σh Σl g[h][l]*C(i,h)*C(j,l) 1<=h<=i,1<=l<=j,且满足 h!=i 或 l !=j
即 总方案数(在i*j个格子中选a[k]个) 减去 没有恰好占据i行j列的方案数
令f[k][i][j] 表示前k种颜色的棋子,放完之后,还剩下i行j列的方案数
f[k][i][j]= Σh Σl f[k-1][h][l]*g[k][h-i][l-j]*C[h][h-i]*C[l][l-j] i<h<=n,j<l<=m
即 枚举前k-1种颜色的棋子放完后,剩下h行l列,那么 第k种颜色就占据h-i行l-j列
#include<cstdio> using namespace std; const int mod=1e9+; #define min(x,y) x<y ? x : y #define N 31
#define M 11 int C[N*N][N*N]; int a[M];
long long g[M][N][N],f[M][N][N]; int main()
{
int n,m,c;
scanf("%d%d%d",&n,&m,&c);
for(int i=;i<=c;++i) scanf("%d",&a[i]);
int lim=n*m;
C[][]=;
for(int i=;i<=lim;++i)
{
C[i][]=;
for(int j=;j<=i;++j) C[i][j]=(C[i-][j-]+C[i-][j])%mod;
}
int r1,r2;
for(int k=;k<=c;++k)
{
r1=min(a[k],n);
for(int i=;i<=r1;++i)
{
r2=min(a[k],m);
for(int j=;j<=r2;++j)
if(i*j>=a[k])
{
g[k][i][j]=C[i*j][a[k]];
for(int h=;h<=i;++h)
for(int l=;l<=j;++l)
if((h!=i || l!=j) && h*l>=a[k])
{
g[k][i][j]-=g[k][h][l]*C[i][h]%mod*C[j][l]%mod;
if(g[k][i][j]<) g[k][i][j]+=mod;
}
}
}
}
f[][n][m]=;
for(int k=;k<=c;++k)
for(int i=;i<n;++i)
for(int j=;j<m;++j)
for(int h=i+;h<=n;++h)
for(int l=j+;l<=m;++l)
if((h-i)*(l-j)>=a[k])
f[k][i][j]=(f[k][i][j]+f[k-][h][l]*g[k][h-i][l-j]%mod*C[h][h-i]%mod*C[l][l-j]%mod)%mod;
int ans=;
for(int i=;i<n;++i)
for(int j=;j<m;++j)
{
ans+=f[c][i][j];
if(ans>=mod) ans-=mod;
}
printf("%d",ans);
return ;
}
3294: [Cqoi2011]放棋子
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 797 Solved: 319
[Submit][Status][Discuss]
Description
Input
Output
输出仅一行,即方案总数除以 1,000,000,009的余数。
Sample Input
3 1
Sample Output
bzoj千题计划261:bzoj3294: [Cqoi2011]放棋子的更多相关文章
- bzoj3294[Cqoi2011]放棋子 dp+组合+容斥
3294: [Cqoi2011]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 755 Solved: 294[Submit][Status] ...
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- BZOJ3294: [Cqoi2011]放棋子
Description Input 输入第一行为两个整数n, m, c,即行数.列数和棋子的颜色数.第二行包含c个正整数,即每个颜色的棋子数.所有颜色的棋子总数保证不超过nm. Output 输出 ...
- bzoj千题计划146:bzoj3295: [Cqoi2011]动态逆序对
http://www.lydsy.com/JudgeOnline/problem.php?id=3295 正着删除看做倒着添加 对答案有贡献的数对满足以下3个条件: 出现时间:i<=j 权值大小 ...
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...
- bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
- bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...
- bzoj千题计划307:bzoj5248: [2018多省省队联测]一双木棋
https://www.lydsy.com/JudgeOnline/problem.php?id=5248 先手希望先手得分减后手得分最大,后手希望先手得分减后手得分最小 棋盘的局面一定是阶梯状,且从 ...
随机推荐
- JQuery快速入门-事件与效果
一.事件 事件绑定的方法有两种: 绑定到元素 查找元素后绑定事件 方法1:绑定到元素 <body> <p onclick='func1()'>点击我</p> < ...
- 一款基于Zigbee技术的智慧鱼塘系统研究与设计
在现代鱼塘养鱼中,主要困扰渔农的就是养殖成本问题.而鱼塘养殖成本最高的就是养殖的人工费,喂养的饲料费和鱼塘中高达几千瓦增氧机的消耗的电费.实现鱼塘自动化养殖将会很好地解决上述问题,大大提高渔农的经济效 ...
- cocos2dx内存优化
纹理消耗了大量内存 在大部分情况下,是纹理(textures)消耗了游戏程序大量的内存.因此,纹理是我们首要考虑优化的对象 纹理加载 cocos2d里面纹理加载分为两个阶段:从图片文件中创建一个Ima ...
- 详细解析 nginx uri 如何匹配 location 规则
location 是 nginx 配置中出现最频繁的配置项,一个 uri 是如何与多个 location 进行匹配的? 在有多个 location 都匹配的情况下,如何决定使用哪一个 location ...
- 通过sqli-labs学习sql注入——基础挑战之less1
环境准备: Phpstudy (PHP+Apache+Mysql) Sql-lab 首先了解下基础知识: URL编码: 因为在浏览器中,当我们访问一个网址的时候,浏览器会自动将用户输入的网址进行UR ...
- PHP学习 例外和错误处理
<?phptry{ open_folder("C:\\book");}catch(Exception $ex) { echo 'Error Message:'.$ex-> ...
- PAT甲题题解-1088. Rational Arithmetic (20)-模拟分数计算
输入为两个分数,让你计算+,-,*,\四种结果,并且输出对应的式子,分数要按带分数的格式k a/b输出如果为负数,则带分数两边要有括号如果除数为0,则式子中的结果输出Inf模拟题最好自己动手实现,考验 ...
- YQCB冲刺第二周第六天
今天的任务为界面的美化. 昨天的任务为实现由用户设置每月初始额度的功能. 暂未遇到问题. 站立会议 任务面板
- linux 常用命令-用户、用户组管理
注:本篇只涉及常用命令,全部命令可以通过help帮助查看. (1)type useradd #查看命令属于内部命令还是外部命令,内部命令是嵌在linux的shell中,外部命令存储在路径中 (2) ...
- 团队冲刺随笔合集—Beta阶段
第一篇:http://www.cnblogs.com/Team-Blog/p/9049271.html 第二篇:https://www.cnblogs.com/Team-Blog/p/9064478. ...