1193 - Dice (II)
Time Limit: 3 second(s) Memory Limit: 32 MB

You have N dices; each of them has K faces numbered from 1 to K. Now you can arrange the N dices in a line. If the summation of the top faces of the dices is S, you calculate the score as the multiplication of all the top faces.

Now you are given N, K, S; you have to calculate the summation of all the scores.

Input

Input starts with an integer T (≤ 25), denoting the number of test cases.

Each case contains three integers: N (1 ≤ N ≤ 1000) K (1 ≤ K ≤ 1000) S (0 ≤ S ≤ 15000).

Output

For each case print the case number and the result modulo 100000007.

Sample Input

Output for Sample Input

5

1 6 3

2 9 8

500 6 1000

800 800 10000

2 100 10

Case 1: 3

Case 2: 84

Case 3: 74335590

Case 4: 33274428

Case 5: 165


PROBLEM SETTER: JANE ALAM JAN
思路:和1145差不多。
dp[i][j]表示前i次点数之和为j的数所有对数的各个的乘积之和。
那么dp[i][j]=dp[i-1][j-1]+dp[i-1][j-2]*2+....dp[i-1][j-k]*k;
这样的复杂度是n*n*n;这样是过不了的;
那么dp[i][j+1]=dp[i-1][j]+dp[i-1][j-1]*2+dp[i-1][j-2]*3+....dp[i-1][j-k+1]*k;
那么dp[i][j+1]=dp[i][j-1]+dp[i-1][j-1]+sum[j-2]-sum[max(0,j-1-m)]-dp[i-1][max(0,j-m-1)]*m;
那么我们每次维护一个dp[i][j]的前缀和就可以了。
 1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string.h>
5 #include<math.h>
6 #include<stdlib.h>
7 #include<queue>
8 using namespace std;
9 typedef long long LL;
10 LL dp[2][15005];
11 const int mod=100000007;
12 LL sum[15005];
13 int main(void)
14 {
15 int i,j,k;
16 scanf("%d",&k);
17 int s;
18 int n,m,c;
19 for(s=1; s<=k; s++)
20 {
21 scanf("%d %d %d",&n,&m,&c);
22 memset(dp,0,sizeof(dp));
23 memset(sum,0,sizeof(sum));
24 for(i=1; i<=m; i++)
25 {
26 dp[1][i]=i;
27 dp[1][i]%=mod;
28 sum[i]=(sum[i-1]+dp[1][i])%mod;
29 }
30 for(i=m+1;i<=c;i++)
31 sum[i]=sum[i-1];
32 for(i=2; i<=n; i++)
33 {
34 int uu=(i)%2;
35 int kk=(i+1)%2;
36 for(j=0; j<i; j++)
37 {
38 dp[uu][j]=0;
39 }
40 for(j=i;j<=c; j++)
41 {
42 dp[uu][j]=((dp[kk][j-1]+dp[uu][j-1])%mod+(sum[j-2]-sum[max(0,j-1-m)])%mod-dp[kk][max(0,j-m-1)]*m%mod)%mod;
43 dp[uu][j]%=mod;
44 dp[uu][j]+=mod;
45 dp[uu][j]%=mod;
46 }
47 for(j=1; j<=c; j++)
48 {
49 sum[j]=sum[j-1]+dp[uu][j];
50 sum[j]%=mod;
51 }
52 }
53 printf("Case %d: ",s);
54 printf("%lld\n",(dp[n%2][c]%mod+mod)%mod);
55 }
56 return 0;
57 }
 

1193 - Dice (II)的更多相关文章

  1. Dice (II) (DP)唉,当时没做出来

    Dice (II) Time Limit: 3000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu [Submit]   [ ...

  2. LightOJ 1248 Dice (III) 概率

    Description Given a dice with n sides, you have to find the expected number of times you have to thr ...

  3. Leetcode 笔记 113 - Path Sum II

    题目链接:Path Sum II | LeetCode OJ Given a binary tree and a sum, find all root-to-leaf paths where each ...

  4. Leetcode 笔记 117 - Populating Next Right Pointers in Each Node II

    题目链接:Populating Next Right Pointers in Each Node II | LeetCode OJ Follow up for problem "Popula ...

  5. 函数式Android编程(II):Kotlin语言的集合操作

    原文标题:Functional Android (II): Collection operations in Kotlin 原文链接:http://antonioleiva.com/collectio ...

  6. 统计分析中Type I Error与Type II Error的区别

    统计分析中Type I Error与Type II Error的区别 在统计分析中,经常提到Type I Error和Type II Error.他们的基本概念是什么?有什么区别? 下面的表格显示 b ...

  7. hdu1032 Train Problem II (卡特兰数)

    题意: 给你一个数n,表示有n辆火车,编号从1到n,入站,问你有多少种出站的可能.    (题于文末) 知识点: ps:百度百科的卡特兰数讲的不错,注意看其参考的博客. 卡特兰数(Catalan):前 ...

  8. [LeetCode] Guess Number Higher or Lower II 猜数字大小之二

    We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...

  9. [LeetCode] Number of Islands II 岛屿的数量之二

    A 2d grid map of m rows and n columns is initially filled with water. We may perform an addLand oper ...

随机推荐

  1. html5的canvas鼠标点击画圆

    <!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...

  2. oracle中char],varchar,varchar2

    VARCHAR.VARCHAR2.CHAR的区别 1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串"abc",对于CHAR (20),表示你存储 ...

  3. 我的分布式微服务框架:YC-Framework

    YC-Framework官方文档:http://framework.youcongtech.com/ YC-Framework源代码:https://github.com/developers-you ...

  4. 安全相关,CSRF

    先说下CSRF的定义 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF ...

  5. java中的原子操作类AtomicInteger及其实现原理

    /** * 一,AtomicInteger 是如何实现原子操作的呢? * * 我们先来看一下getAndIncrement的源代码: * public final int getAndIncremen ...

  6. Dubbo多协议支持

    除了Dubbo服务暴露协议Dubbo协议外,Dubbo框架还支持另外8种服务暴露协议:RMI协议.Hessian协议.HTTP协议.WebService协议.Thrift协议.Memcached协议. ...

  7. 【Windows】github无法访问/hosts文件只能另存为txt

    因为我的github访问不了了,搜索解决方案为修改host文件 https://blog.csdn.net/curry10086/article/details/106800184/ 在hosts文件 ...

  8. Apifox(1)比postman更优秀的接口自动化测试平台

    Apifox介绍 Apifox 是 API 文档.API 调试.API Mock.API 自动化测试一体化协作平台,定位 Postman + Swagger + Mock + JMeter.通过一套系 ...

  9. Redis学习推荐资料合集

    目录 一.官方 二.书籍 三.推荐博客 一.官方 redis官网 redis中文网 redis中文命令网 redis模块 redis-github源码 redis报告 二.书籍 <Redis开发 ...

  10. SQLserver 2014自定义备份数据库

    一.管理-维护计划-维护计划向导-下一步 二.点击更改设置任务执行时间-确定-下一步 三.选择备份数据库完整-下一步 四.选择需要备份的数据库-然后确定 五.点目标自定义备份文件存储目录-下一步 六. ...