博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LightOJ 1193 Dice (II)(区间)
阅读量:5873 次
发布时间:2019-06-19

本文共 1207 字,大约阅读时间需要 4 分钟。

题目链接:

题意:将S分成n个数的和,分成的每个数x的范围[1,m],每种分法n个数的乘积算作该分法的score值。求所有分法的score值之和。

思路:f[S][n]=sigama(f[S-i][n-1]*i)(1<=i<=m)。。。

 

View Code
1 #include 
2 #include
3 #include
4 #define i64 long long 5 using namespace std; 6 7 const i64 MOD=100000007; 8 int C,num=0; 9 int n,K,S;10 i64 f[15005][2],sum[15005][2];11 12 13 i64 DP()14 {15 int i,j,pre=0,cur=1;16 i64 temp[15005];17 memset(f,0,sizeof(f));18 memset(sum,0,sizeof(sum));19 for(i=1;i<=K;i++) f[i][pre]=i,sum[i][pre]=(sum[i-1][pre]+f[i][pre])%MOD;20 while(i<=S) sum[i][pre]=(sum[i-1][pre]+f[i][pre])%MOD,i++;21 22 for(j=2;j<=n;j++)23 {24 temp[1]=0;25 for(i=1;i<=S;i++)26 {27 if(i<=K) f[i][cur]=temp[i];28 else f[i][cur]=((temp[i]-temp[i-K]-sum[i-K-1][pre]*K)%MOD+MOD)%MOD;29 sum[i][cur]=(sum[i-1][cur]+f[i][cur])%MOD;30 temp[i+1]=(temp[i]+sum[i][pre])%MOD;31 }32 pre^=1;33 cur^=1;34 }35 return f[S][pre];36 }37 38 int main()39 {40 for(scanf("%d",&C);C--;)41 {42 scanf("%d%d%d",&n,&K,&S);43 printf("Case %d: %lld\n",++num,DP());44 }45 return 0;46 }

 

 

 

转载地址:http://skhnx.baihongyu.com/

你可能感兴趣的文章
1000 加密算法
查看>>
exif_imagetype() 函数在linux下的php中不存在
查看>>
Ruby的case语句
查看>>
Linux的链接文件-ln命令
查看>>
maven的tomcat插件如何进行debug调试
查看>>
table表头固定
查看>>
截取字符串中两个字符串中的字符串
查看>>
php去除换行符的方法小结(PHP_EOL变量的使用)
查看>>
effective C++中条款37:绝不又一次定义继承而来的缺省參数值
查看>>
spring xml properties split with comma for list
查看>>
判断点是否在三角形内
查看>>
Android实战简易教程-第二十三枪(基于Baas的用户注冊验证username是否反复功能!)...
查看>>
在odl中怎样实现rpc
查看>>
leetcode 110 Balanced Binary Tree
查看>>
python活用isdigit方法显示系统进程
查看>>
MySQL索引覆盖
查看>>
Spring框架之Filter应用
查看>>
项目开发总结
查看>>
知行合一
查看>>
jmeter插件之jsonpath提取响应结果和做断言
查看>>