题目:https://atcoder.jp/contests/agc002/tasks/agc002_f

充要条件是前缀0的个数 >= 颜色种数。

设计 DP ,放一个颜色的时候就把所有该颜色的点都考虑完,不要一个一个放。这样就不用考虑 “剩下多少个旧颜色的点可用” 了。

新放一种颜色的时候,知道现在已经填了多少个位置,所以所有该颜色点的放置方案数是可算的。

dp[ i ][ j ] 表示放了 i 个 0 、j 种颜色的方案。认为颜色是按顺序放的,最后乘上阶乘。就有 \( dp[i][j] -> dp[i+1][j] , dp[i][j]*\binom{(n-j)(k-1)+n-i-1}{k-2} -> dp[i][j+1] \) 。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=,M=N*N,mod=1e9+;
int upt(int x)
{while(x>=mod)x-=mod;while(x<)x+=mod;return x;}
int pw(int x,int k)
{int ret=;while(k){if(k&)ret=(ll)ret*x%mod;x=(ll)x*x%mod;k>>=;}return ret;} int n,k,jc[M],jcn[M],dp[N][N];
void init()
{
int lm=n*k;
jc[]=;for(int i=;i<=lm;i++)jc[i]=(ll)jc[i-]*i%mod;
jcn[lm]=pw(jc[lm],mod-);
for(int i=lm-;i>=;i--)jcn[i]=(ll)jcn[i+]*(i+)%mod;
}
int C(int n,int m)
{
if(n<||m<||n<m)return ;
return (ll)jc[n]*jcn[m]%mod*jcn[n-m]%mod;
}
int main()
{
scanf("%d%d",&n,&k); if(k==){puts("");return ;}
init();
dp[][]=;
for(int i=;i<=n;i++)
for(int j=;j<=i;j++)
{
if(!dp[i][j])continue;int tp=dp[i][j];
if(i<n)dp[i+][j]=upt(dp[i+][j]+tp);
if(j<i)
{
int ml=C((n-j)*(k-)+n-i-,k-);
dp[i][j+]=(dp[i][j+]+(ll)ml*tp)%mod;
}
}
printf("%lld\n",(ll)dp[n][n]*jc[n]%mod);
return ;
}

最新文章

  1. eclipse和myeclipse一键取消所有断点
  2. linux命令(4):ps命令
  3. UVa 10054 The Necklace【欧拉回路】
  4. C++ Prime:switch内部的变量定义
  5. delphi 句柄
  6. HDU_2052——画矩形
  7. shell的特殊符号的表示
  8. Linux IO 调度器
  9. DOM 对象方法
  10. scala位压缩与行情转换二进制
  11. 《RabbitMQ Tutorial》译文 第 6 章 远程过程调用(RPC)
  12. 用js来实现那些数据结构05(栈02-栈的应用)
  13. [转]Virtualization Basics
  14. java远程下载图片
  15. PHP获取表单并使用数组存储 疯狂提示 Notice: Undefined offset
  16. httpd的一些知识点
  17. 管理mycat命令详解
  18. 【SDOI2014】【BZOJ3529】数表
  19. UML类图中的各种箭头代表的含义(转自:http://www.cnblogs.com/damsoft/archive/2016/10/24/5993602.html)
  20. 关于vue+element-ui的table多选禁用某个按钮

热门文章

  1. Delphi IdHttp组件+IdHttpServer组件实现文件下载服务
  2. Vagrant 入门 - box
  3. [LeetCode] 4. Median of Two Sorted Arrays(想法题/求第k小的数)
  4. Winsows10-1909正式版原版下载资料
  5. PHPer面试指南-laravel 篇
  6. nmon内存分析
  7. RMQ(鸽巢原理或字符串操作)
  8. LOJ 2234/BZOJ 3629 聪明的燕姿(数论+DFS)
  9. JS的video获取时长,出现问题汇总
  10. oracle至sqlplus的时候出现错误