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

来源:互联网 发布:stc89c52单片机驱动 编辑:程序博客网 时间:2024/06/01 21:47

题目链接: 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 250000using 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);}


0 0
原创粉丝点击