Codeforces Round #370 (Div. 2) D. Memory and Scores 动态规划
来源:互联网 发布:小时代讲的什么知乎 编辑:程序博客网 时间:2024/06/05 01:17
题意
有两个人在玩游戏,一开始分数分别为a和b,每一局,每个人可以获得分数[-k,k]之间,问你A胜过B的方案数有多少种
题解:
dp[i][j]表示第i轮之后,获得j分数的方案数。
显然这个只会和上一轮有关,所以可以滚动数组优化,又显然可以前缀和优化。
然后维护一下DP
最后再枚举A的分数,统计一下答案就好了。
#include <map>#include <stack>#include <queue>#include <deque>#include <cmath>#include <vector>#include <string>#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define L(i) i<<1#define R(i) i<<1|1#define INF 0x3f3f3f3f#define pi acos(-1.0)#define eps 1e-12#define maxn 210100#define MOD 1000000007int dp[110][maxn],sum[maxn];//dp[i][j]代表第i轮得分为j的方案数int a,b,k,t;int main(){ scanf("%d%d%d%d",&a,&b,&k,&t); dp[0][0] = 1; for(int i = 1; i <= t; i++) { for(int j = 0; j < maxn; j++) sum[j] = ((j>0?sum[j-1]:0) + dp[i-1][j]) % MOD; for(int j = 0; j < maxn; j++) dp[i][j] = (sum[j]-(j-2*k-1>=0?sum[j-2*k-1]:0) + MOD)%MOD; } for(int i = 0; i < maxn; i++) sum[i] = ((i>0?sum[i-1]:0) + dp[t][i])%MOD; //枚举a的得分 int ans = 0; for(int i = 0; i <= 2*k*t; i++) (ans += (1LL)*dp[t][i]*(i+a-b-1<0?0:sum[i+a-b-1])%MOD) %= MOD; printf("%d\n",ans); return 0;}
0 0
- Codeforces Round #370 (Div. 2) D. Memory and Scores 动态规划
- Codeforces Round #370 (Div. 2) D. Memory and Scores
- Codeforces Round #370 (Div. 2) D. Memory and Scores(DP)
- Codeforces Round #370 (Div. 2) D. Memory and Scores —— DP
- 【Codeforces Round 370 (Div 2) D】【前缀和打标记】Memory and Scores 双人随机数值增减K A比B多的方案数
- Codeforces Round 370 (Div 2) D.Memory and Scores 【前缀和 DP】双人随机数值增减K A比B多的方案数
- 动态规划(Memory and Scores,cf 712D)
- CodeForces 712D Memory and Scores
- 【26.87%】【codeforces 712D】Memory and Scores
- codeforces 712D Memory and Scores (dp)
- Memory and Scores CodeForces
- Codeforces Round #370 (Div. 2)-C. Memory and De-Evolution
- 【Codeforces Round 370 (Div 2) A】【水题】Memory and Crow
- Codeforces Round #370 (Div. 2) C. Memory and De-Evolution
- Codeforces Round #370 (Div. 2) E. Memory and Casinos
- 【DP or 生成函数】[CodeForces - 712D]Memory and Scores
- codeforces 712D. Memory and Scores(dp)
- Codeforces 712D Memory and Scores【dp+前缀和】
- RtlConvertWin32FilePathToNtFilePath
- 对Java 中List的理解
- bxSlider 在网页里添加幻灯片效果
- 多列索引实验
- 集合:Set实现类HashSet
- Codeforces Round #370 (Div. 2) D. Memory and Scores 动态规划
- 3-6 静态数据成员与静态成员函数
- volatile
- Android适配
- 使用cookie实现一周内自动登录
- Spring源码解析——如何阅读源码
- try catch finally
- Technocup 2017 - Elimination Round 1 A题
- Android Service的启动过程