Time:2016.05.26
Author:xiaoyimi
转载注明出处谢谢


传送门
思路:
观察到n,m比较小,我们可以暴力+打表一波
k的范围比较大,但是我们比较容易想到,当k很大时,实际上就是在原来的基础上乘以CnkC^n_k,所以暴力枚举所有长度为i,不同字符为k的串,然后加到f[i][j][k],j就是该串的不同子串数目
暴力大概跑了4s左右
(f[i][j][k]:字符串长度为i,不同子串数目为j,由k个不同字符构成的串的数量)
对于ans(n,m,k)来说,它就是
∑f[n][m][i]∗Cik∑f[n][m][i]*C^i_k其中i=1..min(n,k)
注意:
暴力代码被我误删了……懒得重新打一遍,所以没法给大家看暴力代码了……
代码:

#include<cstdio>
#include<iostream>
#define mo 1000000007
#define LL long long
using namespace std;
int n,m,k,ans;
int a[18],f[12][102][12],P[12];
void work()
{
    scanf("%d%d%d",&n,&m,&k);
    P[1]=k;
    ans=0;
    for (int i=2;i<=n;i++) P[i]=(LL)P[i-1]*(k-i+1)%mo;
    for (int i=1;i<=min(n,k);i++)
        ans=(ans+(LL)P[i]*f[n][m][i]%mo)%mo;
    printf("%d\n",ans);
}
int main()
{
f[1][1][1]=1;
f[2][2][1]=1;
f[2][3][2]=1;
f[3][3][1]=1;
f[3][5][2]=3;
f[3][6][3]=1;
f[4][4][1]=1;
f[4][7][2]=3;
f[4][8][2]=4;
f[4][9][3]=6;
f[4][10][4]=1;
f[5][5][1]=1;
f[5][9][2]=3;
f[5][11][2]=10;
f[5][12][2]=2;
f[5][12][3]=6;
f[5][13][3]=19;
f[5][14][4]=10;
f[5][15][5]=1;
f[6][6][1]=1;
f[6][11][2]=3;
f[6][14][2]=10;
f[6][15][2]=9;
f[6][15][3]=6;
f[6][16][2]=9;
f[6][17][3]=45;
f[6][18][3]=39;
f[6][18][4]=10;
f[6][19][4]=55;
f[6][20][5]=15;
f[6][21][6]=1;
f[7][7][1]=1;
f[7][13][2]=3;
f[7][17][2]=10;
f[7][18][3]=6;
f[7][19][2]=21;
f[7][20][2]=10;
f[7][21][2]=19;
f[7][21][3]=45;
f[7][22][3]=38;
f[7][22][4]=10;
f[7][23][3]=154;
f[7][24][3]=58;
f[7][24][4]=126;
f[7][25][4]=214;
f[7][25][5]=15;
f[7][26][5]=125;
f[7][27][6]=21;
f[7][28][7]=1;
f[8][8][1]=1;
f[8][15][2]=3;
f[8][20][2]=10;
f[8][21][3]=6;
f[8][23][2]=20;
f[8][24][2]=26;
f[8][25][2]=8;
f[8][25][3]=45;
f[8][26][2]=36;
f[8][26][4]=10;
f[8][27][2]=24;
f[8][27][3]=85;
f[8][28][3]=159;
f[8][29][3]=287;
f[8][29][4]=126;
f[8][30][3]=312;
f[8][30][4]=100;
f[8][30][5]=15;
f[8][31][3]=72;
f[8][31][4]=807;
f[8][32][4]=658;
f[8][32][5]=280;
f[8][33][5]=755;
f[8][33][6]=21;
f[8][34][6]=245;
f[8][35][7]=28;
f[8][36][8]=1;
f[9][9][1]=1;
f[9][17][2]=3;
f[9][23][2]=10;
f[9][24][3]=6;
f[9][27][2]=21;
f[9][28][2]=8;
f[9][29][2]=35;
f[9][29][3]=45;
f[9][30][2]=10;
f[9][30][4]=10;
f[9][31][2]=53;
f[9][32][2]=28;
f[9][32][3]=84;
f[9][33][2]=67;
f[9][33][3]=218;
f[9][34][2]=20;
f[9][34][3]=24;
f[9][34][4]=126;
f[9][35][3]=611;
f[9][35][5]=15;
f[9][36][3]=590;
f[9][36][4]=220;
f[9][37][3]=907;
f[9][37][4]=818;
f[9][38][3]=468;
f[9][38][4]=1382;
f[9][38][5]=280;
f[9][39][3]=72;
f[9][39][4]=3496;
f[9][39][5]=211;
f[9][39][6]=21;
f[9][40][4]=1718;
f[9][40][5]=2758;
f[9][41][5]=3687;
f[9][41][6]=540;
f[9][42][6]=2085;
f[9][42][7]=28;
f[9][43][7]=434;
f[9][44][8]=36;
f[9][45][9]=1;
f[10][10][1]=1;
f[10][19][2]=3;
f[10][26][2]=10;
f[10][27][3]=6;
f[10][31][2]=20;
f[10][32][2]=9;
f[10][33][3]=45;
f[10][34][2]=38;
f[10][34][4]=10;
f[10][35][2]=31;
f[10][36][2]=42;
f[10][37][2]=30;
f[10][37][3]=86;
f[10][38][2]=68;
f[10][38][3]=152;
f[10][39][2]=80;
f[10][39][3]=136;
f[10][39][4]=126;
f[10][40][2]=96;
f[10][40][3]=30;
f[10][40][5]=15;
f[10][41][2]=76;
f[10][41][3]=644;
f[10][42][2]=8;
f[10][42][3]=769;
f[10][42][4]=218;
f[10][43][3]=958;
f[10][43][4]=967;
f[10][44][3]=1993;
f[10][44][4]=48;
f[10][44][5]=280;
f[10][45][3]=2137;
f[10][45][4]=2962;
f[10][45][6]=21;
f[10][46][3]=1762;
f[10][46][4]=4666;
f[10][46][5]=459;
f[10][47][3]=576;
f[10][47][4]=9382;
f[10][47][5]=2777;
f[10][48][3]=36;
f[10][48][4]=11778;
f[10][48][5]=4435;
f[10][48][6]=540;
f[10][49][4]=3948;
f[10][49][5]=19074;
f[10][49][6]=390;
f[10][49][7]=28;
f[10][50][5]=15485;
f[10][50][6]=7435;
f[10][51][6]=14441;
f[10][51][7]=945;
f[10][52][7]=4907;
f[10][52][8]=36;
f[10][53][8]=714;
f[10][54][9]=45;
f[10][55][10]=1;
    int t;
    scanf("%d",&t);
    while (t--) work();
    return 0;
}

【HDU5482】Numquam vincar,暴力(da biao)预处理+组合数相关推荐

  1. UVa 12325 - Zombie's Treasure Chest(暴力枚举+预处理)

    给出背包大小n,两种宝物的体积s1.s2,两种宝物的价值v1.v2.求能装下的最大价值. 首先进行预处理,使n/s1的值尽可能小,满足O(n)的时间不超时.s2的宝物1与s1个宝物2体积相同,所以s= ...

  2. Codeforces 869C The Intriguing Obsession 组合数取模

    Codeforces 869C The Intriguing Obsession 思考一下人生. 这是一场物语场,而且A题直接puts("Karen")能过,我对此印象非常深.我不 ...

  3. hdu 4876 ZCC loves cards(暴力)

    题目链接:hdu 4876 ZCC loves cards 题目大意:给出n,k,l,表示有n张牌,每张牌有值.选取当中k张排列成圈,然后在该圈上进行游戏,每次选取m(1≤m≤k)张连续的牌,取牌上值 ...

  4. 组合计数 ---- 2020 icpc 上海 The Journey of Geor Autumn(思维划分问题计数+预处理优化)

    题目链接 题目大意: 就是你有一个nnn的全排列,现在问你去重排这个排列使得对于给定的kkk,满足对于任意的ai,i>ka_i,i>kai​,i>k的都有ai>min(ai−1 ...

  5. 【uoj#209】[UER #6]票数统计 组合数+乱搞

    题目描述 一个长度为 $n$ 的序列,每个位置为 $0$ 或 $1$ 两种.现在给出 $m$ 个限制条件,第 $i$ 个限制条件给出 $x_i$ .$y_i$ ,要求至少满足以下两个条件之一: 序列的 ...

  6. codeforces1670F Jee, You See?(DP/位运算/前缀和/组合数)

    题目链接:codeforces 1670F 题目思路: 首先,对于 sum,有 s u m = a 1 + a 2 + ⋯ + a n sum = a_1 + a_2 + \cdots + a_n s ...

  7. 暑假2019培训:Day2提高组测试赛

    概述 今天我们的Chty_syq放了点水,第一题来了个水题-- 但我依旧考的不好 题目顺序 1. 小刚传说 2. 中珂院的难题 3. 欧拉图 1. 小刚传说 (legendary.cpp) [ 时空限 ...

  8. 数位dp 的简单入门

    时间紧张,就不讲那么详细了. 之前一直被深搜代码误解,以为数位dp 其实就是记忆化深搜...(虽说爆搜确实很舒服而且还好想) 但是后来发现数位dp 的标准格式其实是 预处理 + dp ...... 数 ...

  9. bzoj3167[HEOI2013]SAO

    这虽然是游戏,但可不是闹着玩的. --茅场晶彦 HEOI2013有一道SAO和一道ALO--SwordArtOnline和AlfheimOnline233333 一开始看到这道题,我觉得noip模拟赛 ...

最新文章

  1. BZOJ1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
  2. signature=60e238a971088f65081a607ed25e04b3,Healthcare Claims Loss Control Systems And Methods
  3. 1—YOLO2:环境搭建
  4. redis的hGetAll函数的性能问题
  5. hanlp是开源的吗_自然语言处理之:搭建基于HanLP的开发环境(转)
  6. cc java开发环境搭建_Windows系统下java开发环境搭建
  7. 一周冲刺计划2//第一天
  8. 【NGS接龙】薛宇:漫谈生物信息圈儿的那些年、那些事!
  9. 使用jQuery的blockUI来实现页面回传数据时的等待页面
  10. RK 3399 切换以太网卡
  11. 多线程中的互斥控制程序代码_互斥锁解决 Python 中多线程共享全局变量的问题...
  12. 文件太大打不开,可以使用LogViewer
  13. 微信.gif表情包保存到本地
  14. Let me not Pray 让我不再祈求
  15. 中国风?古典系?AI中文绘图创作尝鲜!⛵
  16. STC11F02实现红外线遥控开关
  17. Chrome Network面板工具之万文多图详解
  18. OPC通讯开发——客户端开发工具WTopcclient说明手册部分翻译及个人补充
  19. 铁道部新客票系统设计(一)
  20. Test source folder ‘src/test/java‘ in project ‘o2o...tput folder that is not also used for main sour

热门文章

  1. 使用app测试Modelarts在线服务
  2. Android艺术探索笔记 - 创建AIDL文件后自动生成的文件分析
  3. Mysql orangepi_orangepi4安装gogs
  4. 用mplfinance库定制A股常用的K线、均线图
  5. 机器学习的MLE和MAP:最大似然估计和最大后验估计
  6. numpy.reshape(与ndarray.reshape一样)使用方法
  7. C++命名空间的三种使用方法
  8. 怎么装python编译器_python编译器安装
  9. 使用key 发smtp.sendgrid.net_手把手教你使用 iOS 13 效率神器 「快捷指令」
  10. 某东商城获取eid和fp参数方法