【JZOJ3892】【NOIP2014模拟10.25A组】放棋子
来源:互联网 发布:自制西门子编程线 编辑:程序博客网 时间:2024/05/22 03:50
Description
Data Constraint
Solution
这又是一道组合数的题。我们枚举现在至少有x行y列没有放至少一个棋子,那么要选择这x行y列的方案显然为
但注意,我们的定义是至少有x行y列,所以会有重复的情况,这时就需要容斥一下,所以是最后就为
Code
#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>#define ll long longusing namespace std;const ll mo=1e9+7,maxn=403;int f[maxn*maxn][maxn];ll c[maxn];ll n,m,i,t,j,k,l,p,ans,x,y,z;ll mi(ll x,ll y){ if (y==1) return x; ll t=mi(x,y/2); if (y%2) return t*t%mo*x%mo;return t*t%mo;}ll dg(ll x,ll y){ return c[x]*mi(c[y]*c[x-y]%mo,mo-2)%mo;}int main(){// freopen("data.in","r",stdin); scanf("%lld%lld%lld",&n,&m,&p);c[0]=1; for (i=1;i<=400;i++) c[i]=c[i-1]*i%mo; f[0][0]=1; for (i=1;i<=n*m;i++) for (j=1;j<=min(i,p+1);j++) f[i][j]=(ll)(j*f[i-1][j]%mo+f[i-1][j-1])%mo; for (i=1;i<=n*m;i++) for (j=1;j<=p+1;j++) f[i][j]=(ll)f[i][j]*c[j]%mo; for (i=0;i<=n;i++){ x=dg(n,i); for (j=0;j<=m;j++){ if ((i+j)%2) z=-1; else z=1; y=(ll)(f[(n-i)*(m-j)][p+1]+f[(n-i)*(m-j)][p])%mo*x%mo*dg(m,j)%mo; ans=(ans+y*z+mo)%mo; } } printf("%lld\n",ans);}
1 0
- 【JZOJ3892】【NOIP2014模拟10.25A组】放棋子
- 【NOIP2014模拟10.25A组】放棋子
- [JZOJ3892] 放棋子
- 【jzoj3892】【放棋子】【数论】【第二类斯特林数】
- 【NOIP2014模拟10.25A组】钻石交易
- 【NOIP2014模拟10.25A组】画矩形
- 【NOIP2014模拟10.25A组】画矩形
- 【JZOJ3891】【NOIP2014模拟10.25A组】钻石交易
- 【JZOJ3893】【NOIP2014模拟10.25A组】画矩形
- 放棋子
- 放棋子
- 放棋子
- 放棋子
- 放棋子
- 放棋子
- 放棋子
- 【NOIP2014模拟11.2A组】国色天香 (Standard IO)
- NOIP2014提高组模拟8.9
- 图解Linux命令之--wc命令
- 【LeetCode】 129. Sum Root to Leaf Numbers
- 【NOIP2014模拟10.25A组】放棋子
- day 1
- 2017.1.20【初中部 GDKOI】模拟赛B组 邻近(near) 题解
- 【JZOJ3892】【NOIP2014模拟10.25A组】放棋子
- 2017.1.20【初中部 GDKOI】模拟赛B组 电影院(cinema) 题解
- 【NOIP2014模拟10.25A组】画矩形
- 地图中的鼠标移动响应
- 【JZOJ3893】【NOIP2014模拟10.25A组】画矩形
- 【USACO TRAINING】奶牛家谱
- 【LeetCode】 279. Perfect Squares
- 关于第二类斯特林数
- 1、LED闪烁实验