题目大意

有n种颜色,每种k个球。将这些球任意排列,将每种颜色中最前面的一个求涂成白色(就是n+1种颜色),求最终的排列的方案的个数。

解题思路

考虑如何计算不会算重,

按颜色顺序,每次往排列插入k个球,k-1个某种颜色,以及一个白球。

那么只要我们每次插入k个球时,保证白球一定在之前插入的白球的后面,并且某种颜色的第一个球,放在上一次的颜色的第一个球的后面,就可以保证不会算重,最后再乘个n!。

但是正着不好做,于是反过来插入,先插的n种颜色,dp一下,设f[i][j]表示放到第i种颜色,前面有j+1个白球(为啥是j+1?其实只是为了方便)。

#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
#include <map>
#include <bitset>
#include <set>
const int maxlongint=2147483647;
const long long mo=1e9+7;
const int N=2005;
using namespace std;
int n,k;
long long f[N][N],jc[N*N],ny[N*N],ans;
long long poww(long long x,int y)
{
long long s=1;
for(;y;y>>=1,x=x*x%mo)
if(y&1) s=s*x%mo;
return s;
}
long long C(int m,int n)
{
if(n>m) return 0;
return jc[m]*ny[n]%mo*ny[m-n]%mo;
}
int main()
{
scanf("%d%d",&n,&k);
if(k<=1)
{
printf("1\n");
return 0;
}
jc[0]=ny[0]=1;
for(int i=1;i<=n*k;i++) jc[i]=jc[i-1]*i%mo,ny[i]=poww(jc[i],mo-2);
f[0][0]=1;
for(int i=1;i<=n;i++)
for(int j=i;j>=0;j--)
f[i][j]=(f[i][j]+f[i-1][j-1]*C(k*i-j-1,k-2)%mo+f[i][j+1])%mo;
printf("%lld",f[n][0]*jc[n]%mo);
}

最新文章

  1. 关于css中pointer-events属性的怪异行为
  2. Solr学习总结(一)Solr介绍
  3. TCP与UDP的区别
  4. 用 FragmentManager 替换时使用 GoogleMaps 崩溃 app
  5. C++头文件,预处理详解
  6. 便宜有好货:Oracle免费的便捷Web应用开发框架
  7. Mysql命令-以NULL做where条件过滤时应该写 IS NULL;
  8. 《Unity3D-播放被打中的时候粒子的特效的代码》
  9. client,server,nginx 在使用keepAlive 专题
  10. 使用xUnit为.net core程序进行单元测试 -- Assert
  11. java获取真实的IP地址工具类
  12. Linux mmc framework2:基本组件之mmc
  13. maven . mac
  14. 用mobiscroll.js的treelist实现弹出下拉效果
  15. C++ inline内联函数
  16. Java_并发线程_Semaphore、CountDownLatch、CyclicBarrier、Exchanger
  17. 【阿里云】WindowsServer2012 搭建FTP站点 图文记录
  18. maven package 命令报:-source1.3 中不支持注释错误
  19. java基础60 JavaScript字符串转换成数字(网页知识)
  20. Linux命令行测试网速speedtest.net

热门文章

  1. 运用加密技术保护Java源代码(转)
  2. Boot-crm管理系统开发教程(一)
  3. flume收集日志直接sink到oracle数据库
  4. 数据库数据导入/导出报错:无法在只读列“Id”中插入数据。
  5. BZOJ5017题解SNOI2017炸弹--玄学递推
  6. python增量爬虫
  7. centos安装配置mariadb
  8. java实现spark常用算子之Union
  9. Centos7:Redis3.0集群搭建
  10. kbmMW 5.09.00是个必须升级的版本!