【jzoj3892】【放棋子】【数论】【第二类斯特林数】
来源:互联网 发布:淘宝直通车测图教程 编辑:程序博客网 时间:2024/06/05 20:11
题目大意
解题思路
考虑强制i行j列一定不放,其他可放可不放,用组合数处理一下。考虑剩下的涂什么颜色,就是将n个不同的数放到m个集合,是第二类斯特林数,阶乘处理一下。
code
#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define LL long long#define min(a,b) ((a<b)?a:b)#define max(a,b) ((a>b)?a:b)#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)using namespace std;int const maxn=400,mo=1e9+7;int n,m,C,c[maxn+10][maxn+10],fact[maxn+10],f[maxn*maxn+10][maxn+1];int main(){ freopen("d.in","r",stdin); freopen("d.out","w",stdout); scanf("%d%d%d",&m,&n,&C); fo(i,0,maxn){ c[i][0]=1; fo(j,1,i)c[i][j]=(1ll*c[i-1][j-1]+c[i-1][j])%mo; } fact[0]=1;fo(i,1,maxn)fact[i]=(1ll*fact[i-1]*i)%mo; f[0][0]=1;fo(i,1,maxn*maxn)fo(j,1,maxn)f[i][j]=(1ll*f[i-1][j]*j+f[i-1][j-1])%mo; int ans=0; fo(i,0,n)fo(j,0,m){ int x=((1ll*fact[C+1]*f[(n-i)*(m-j)][C+1]%mo+1ll*fact[C]*f[(n-i)*(m-j)][C]%mo)%mo); ans=(ans+(((i+j)&1)?-1ll:1ll)*c[n][i]*c[m][j]%mo*((1ll*fact[C+1]*f[(n-i)*(m-j)][C+1]%mo+1ll*fact[C]*f[(n-i)*(m-j)][C]%mo)%mo)%mo)%mo; int bb; bb++; } printf("%d",(ans%mo+mo)%mo); return 0;}
0 0
- 【jzoj3892】【放棋子】【数论】【第二类斯特林数】
- [JZOJ3892] 放棋子
- 【JZOJ3892】【NOIP2014模拟10.25A组】放棋子
- 放棋子
- 放棋子
- 放棋子
- 放棋子
- 放棋子
- 放棋子
- 放棋子
- 放棋子--蓝桥杯
- 取放棋子问题
- BZOJ4563 [Haoi2016]放棋子
- bzoj4563【HAOI2016】放棋子
- 4563: [Haoi2016]放棋子
- BZOJ3294: [Cqoi2011]放棋子
- 【JZOJ 3892】 放棋子
- BZOJ3294: [Cqoi2011]放棋子
- Scala学习整理[第三十二章 GUI编程]<Programming In Scala>
- 冒泡排序,仔细看看有什么不同?
- 线程池的原理及实现及问题
- P1098 字符串的展开
- Atitit 图像处理之编程之类库调用的接口api cli gui ws rest attilax大总结.docx
- 【jzoj3892】【放棋子】【数论】【第二类斯特林数】
- 辐射天线区域划分
- Harris角点检测原理详解
- 2017年1月20日
- 用c++建立一个矩阵类Matrix,存储一个4*4的矩阵并能在矩阵中查找某数。
- 类的继承练习
- 智能医疗---医疗实体识别
- 不昏
- Oracle索引或这类索引的分区处于不可用状态 查询