您的位置:首页 > 其它

Codeforces Round #370 (Div. 2) D. Memory and Scores —— DP

2017-04-05 19:02 375 查看
题目链接: http://codeforces.com/contest/712/problem/D

题解:待定……

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<queue>
#include<vector>
#include<map>
#include<string>
#include<set>
#define LL long long
#define MAX(a,b) (a>b?a:b)
#define MIN(a,b) (a<b?a:b)
#define INF 0x7fffffff
#define LNF ((1LL<<62)-1)
#define mod 1000000007
#define maxn 250000

using namespace std;

LL dp[105][maxn], sum[maxn];

int main()
{
int a,b,k,t;
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-1>=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 j = 0; j<maxn; j++)
sum[j] = ( (j-1>=0?sum[j-1]:0) + dp[t][j] )%mod;

LL ans = 0;
for(int i = 0; i<=2*k*t; i++)
ans += ( 1LL*dp[t][i] * (i+a-b-1>=0?sum[i+a-b-1]:0) )%mod, ans %= mod;
printf("%lld\n",ans);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: