正解:dp+数论

解题报告:

传送门!

考虑对每种颜色的棋子单独考虑鸭,那显然有,当某一行或某一列已经被占据的时候,那一行/一列就不能再放别的颜色的棋子了,相当于直接把那一行/一列直接消了

显然就能考虑到dp?设f[i][j]:剩余i行j列的方案数

转移就枚举这个颜色的棋子放了p行q列,设g[d][p][q]:d个棋子恰好放了p行q列的方案数

直接枚举pq,f[i][j]=∑f[i+p][j+1]*g[c[k]][p][q]

现在就只要知道怎么求g就好

看到这种恰好balabala的应该就第一反应想到容斥,,,?

这里也一样啊,就组合数算下容斥下就欧克辣!

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define ll long long
#define gc getchar()
#define ri register int
#define rc register char
#define rb register bool
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i) const int mod=,N=+;
int n,m,c,num[N],fac[N*N],ifac[N*N],g[N][N][N],f[N][N][N]={},as; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il int power(ri x,ri y){int ret=;while(y){if(y&)ret=1ll*ret*x%mod;x=1ll*x*x%mod;y>>=;}return ret;}
il void pre(ri n)
{
fac[]=;rp(i,,n)fac[i]=1ll*fac[i-]*i%mod;
ifac[n]=power(fac[n],mod-);my(i,n-,)ifac[i]=1ll*ifac[i+]*(i+)%mod;
}
inline int C(ri n,ri m){return 1ll*fac[n]*ifac[m]%mod*ifac[n-m]%mod;} int main()
{
// freopen("3158.in","r",stdin);freopen("3158.out","w",stdout);
n=read();m=read();c=read();rp(i,,c)num[i]=read();pre(n*m);
rp(i,,c)
{
rp(j,,n)
{
rp(k,,m)
{
if(j*k<num[i])continue;
g[i][j][k]=C(j*k,num[i]);
rp(p,,j)rp(q,,k)if(p^j || q^k)g[i][j][k]=(g[i][j][k]+(mod-1ll*C(j,p)*C(k,q)%mod*g[i][p][q]%mod))%mod;
}
}
}
rp(i,,c)rp(j,,n)rp(k,,m)rp(p,,j)rp(q,,k)f[i][j][k]=(f[i][j][k]+1ll*f[i-][j-p][k-q]*g[i][p][q]%mod*C(n-j+p,p)%mod*C(m-k+q,q)%mod)%mod;
rp(i,,n)rp(j,,m)as=(as+f[c][i][j])%mod;printf("%d\n",as);
return ;
}

放下代码QwQ

洛谷P3158 放棋子 [CQOI2011] dp+数论的更多相关文章

  1. 洛谷 P5279 - [ZJOI2019]麻将(dp 套 dp)

    洛谷题面传送门 一道 dp 套 dp 的 immortal tea 首先考虑如何判断一套牌是否已经胡牌了,考虑 \(dp\)​​​​​.我们考虑将所有牌按权值大小从大到小排成一列,那我们设 \(dp_ ...

  2. 洛谷P3158 [CQOI2011]放棋子 组合数学+DP

    题意:在一个m行n列的棋盘里放一些彩色的棋子,使得每个格子最多放一个棋子,且不同颜色的棋子不能在同一行或者同一列.有多少祌方法? 解法:这道题不会做,太菜了qwq.题解是看洛谷大佬的. 设C是组合数, ...

  3. [洛谷P3158] [CQOI2011]放棋子

    洛谷题目链接:[CQOI2011]放棋子 题目描述 在一个m行n列的棋盘里放一些彩色的棋子,使得每个格子最多放一个棋子,且不同 颜色的棋子不能在同一行或者同一列.有多少祌方法?例如,n=m=3,有两个 ...

  4. [CQOI2011]放棋子 (DP,数论)

    [CQOI2011]放棋子 \(solution:\) 看到这道题我们首先就应该想到有可能是DP和数论,因为题目已经很有特性了(首先题面是放棋子)(然后这一题方案数很多要取模)(而且这一题的数据范围很 ...

  5. P3158 [CQOI2011]放棋子(dp+组合数)

    P3158 [CQOI2011]放棋子 放棋子的顺序和方案数无关,所以可以从按颜色递推 设$f[u][p][k]$为放到第$u$种颜色,所剩空间$p*k$的方案数 $g[u][i][j]$表示第$u$ ...

  6. 【BZOJ 3294】 3294: [Cqoi2011]放棋子 (DP+组合数学+容斥原理)

    3294: [Cqoi2011]放棋子 Description Input 输入第一行为两个整数n, m, c,即行数.列数和棋子的颜色数.第二行包含c个正整数,即每个颜色的棋子数.所有颜色的棋子总数 ...

  7. 洛谷P1541 乌龟棋(四维DP)

    To 洛谷.1541 乌龟棋 题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游 ...

  8. $loj10156/$洛谷$2016$ 战略游戏 树形$DP$

    洛谷loj Desription Bob 喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的方法.现在他有个问题. 现在他有座古城堡,古城堡的路形成一棵树.他要在这棵树的节点上放置最少数 ...

  9. 洛谷2344 奶牛抗议(DP+BIT+离散化)

    洛谷2344 奶牛抗议 本题地址:http://www.luogu.org/problem/show?pid=2344 题目背景 Generic Cow Protests, 2011 Feb 题目描述 ...

随机推荐

  1. java Filter过滤器例外URL设置

    在web.xml声明的一个filter中: <!– session过滤filter –> <filter> <filter-name>SessionFilter&l ...

  2. [译]Godot 引擎 GDNative 架构初探

    GDNative的架构从最早叫"DLScript"的时候到目前为止已经发生了很大的变化.随着Godot 3.0版本接近最终发布以及API越来越稳定,是时候对GDNative目前的形 ...

  3. JVM 内部原理(五)— 基本概念之 Java 虚拟机官方规范文档,第 7 版

    JVM 内部原理(五)- 基本概念之 Java 虚拟机官方规范文档,第 7 版 介绍 版本:Java SE 7 每位使用 Java 的程序员都知道 Java 字节码在 Java 运行时(JRE - J ...

  4. Mybatis(一)走进Mybatis与FisrtExample

    前言 一直在使用,从未系统的总结起来.所以这里给大家带来的是mybatis的总结,系统大家能够对这个框架有一定的系统的学习与认识. mybatis和Hibernate应该是现在主流的ORM框架了. m ...

  5. gdb 脚本调试

    在使用gdb调试程序的时候,有时候需要设定多个断点,重复执行某些操作,而这些操作写起来比较麻烦,这个时候就应该想起来用gdb命令脚本了,它能够很好的完成这些工作.以设置多个断点为例,我写的命令脚本为- ...

  6. ASP.NET MVC 4 (十一) Bundles和显示模式

    Bundles用于打包CSS和javascript脚本文件,优化对它们的组织管理.显示模式则允许我们为不同的设备显示不同的视图. 默认脚本库 在VS创建一个MVC工程,VS会为我们在scripts目录 ...

  7. 父页面操作嵌套iframe子页面的HTML标签元素

    一个页面A.html使用iframe嵌套一个页面B.html,在A页面写js操作B页面HTML元素,首先要获取到B页面document对象,才能对嵌套页面进行操作 请看一个实例,在A页面写js操作B页 ...

  8. 堆的C语言实现

    在C++中,可以通过std::priority_queue来使用堆. 堆的C语言实现: heap.c /** @file heap.c * @brief 堆,默认为小根堆,即堆顶为最小. */ #in ...

  9. .NET Core开发日志——Peachpie

    .NET Core的生态圈随着开源社区的力量不断注入至其中,正在变得越来越强盛,并且不时得就出现些有意思的项目,比如Peachpie,它使得PHP的代码迁移到.NET Core项目变得可能. 从创建简 ...

  10. mysql的多表查询join

    http://blog.csdn.net/jintao_ma/article/details/51260458 https://zhidao.baidu.com/question/1304158100 ...