题意:有m种字符,要求构造两段长度为n的字符串,其中这两段不能有相同的字符

枚举左边选了i种字符,右边可以选1,2....min(n,m-i)种字符

这样就把问题转化为用k种字符构造n长度的字符串的种类有多少种。

第二类stirling数是指将基数为n的集合分为恰好k个(不做区分)非空集合的方法数。这里我们把长度作为基数,把可提供的颜色作为要划分的集合数。由于这里每个集合要唯一区分,所以要乘上k!。之后枚举一下就可以了。

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
typedef long long ll;
const int mo = 1e9 + ;
long long s[][],f[];
long long myc[][];
void init()
{
myc[][]=;
myc[][]=myc[][]=;
for(int i=;i<=;i++)
{
myc[i][]=;
myc[i][i] = ;
for(int j=;j<i;j++)
myc[i][j]=(myc[i-][j]+myc[i-][j-])%mo;//组合数
}
f[]=;
for(int i=;i<=;i++)
f[i]=(f[i-]*i)%mo;//阶乘
for(int i=;i<=;i++)
s[i][i]=,s[i][]=;
for(int i=;i<=;i++)
{
for(int j=;j<=i-;j++)
{
s[i][j]=(j*s[i-][j]+s[i-][j-])%mo;//斯特林数
}
}
return ;
}
int main()
{
int T,n,m,i,j;
cin>>T;
init();
while(T--)
{
cin>>n>>m;
long long ans=;
for(i=;i<=min(m-,n);i++)
{
long long now=(((myc[m][i]*s[n][i])%mo)*f[i])%mo;
int up=min(n,m-i);
for(j=;j<=up;j++)
{
ans=(ans+(f[j]*now)%mo*((myc[m-i][j]*s[n][j])%mo))%mo;
}
}
cout<<ans<<endl;
}
return ;
}

最新文章

  1. CSS系列:CSS3新增选择器
  2. 一起谈谈MD5加密算法
  3. git学习:忽略部分文件
  4. redis 不能持久化问题 MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk.
  5. Cocos2d-JS轻量级开发
  6. canvas 的学习
  7. 使用urllib2的HttpResponse导致内存不回收(内存泄漏)
  8. Swift中可选型的Optional Chaining 和 Nil-Coalesce(Swift2.1)
  9. Android开发_关于点击事件
  10. 写入与导出excel
  11. jQuery Ajax 二次封装
  12. JSP获取绝对物理地址
  13. vue+node.js+webpack开发微信公众号功能填坑——v -for循环
  14. Mybatis源码之(TypeAliasRegistry)TypeAlias别名实现机制
  15. springMVC4(7)模型视图方法源代码综合分析
  16. windbg 经典死锁调试
  17. SQL Server PageIOLatch和PageLatch
  18. Linux养成笔记
  19. HDU2859(KB12-Q DP)
  20. Spark记录-Scala异常处理与文件I/O

热门文章

  1. 【JDBC】仅输入表名和要插入的记录数,自动检测表的字段和类型,然后插入数据的全自动程序(Oracle版)
  2. Mysql修改数据文件默认目录datadir
  3. Xamarin图表开发基础教程(1)
  4. 页面的Tab选项卡 简单实例
  5. c++ 网络编程基础
  6. Python3基础 str : 对字符串进行切片
  7. python-learning-第二季-数据库编程
  8. java.io.IOException: Connection reset by peer at sun.nio.ch.FileDispatcherImpl.read0(Native Method) at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
  9. 全面系统Python3入门+进阶-1-1 导学
  10. 研究 node lzma 的压缩解压缩