hazu A. Little Red Riding Hood (DP)@

来源:互联网 发布:sap mm03附加数据 编辑:程序博客网 时间:2024/06/06 02:32




题意:给定一列数,每次可以选择一个数,当选择一个数时,距离这个数k的数都会消失,求最大的可以选择的数的和




#include <iostream>#include <bits/stdc++.h>using namespace std;typedef long long LL;const int N = 1e5+7;const int inf = 0x3f3f3f3f;const int mod = 10007;LL dp[N][3], a[N];  int main(){    int t;    scanf("%d", &t);    while(t--)    {        int n, k;        scanf("%d %d", &n,&k);        for(int i=1;i<=n;i++)        {            scanf("%lld", &a[i]);        }        memset(dp,0,sizeof(dp));        LL ans=0;        for(int i=1;i<=n;i++)        {            dp[i][0]=max(dp[i-1][1],dp[i-1][0]);            if(i-k-1>=0) dp[i][1]=max(dp[i-k-1][0],dp[i-k-1][1])+a[i];            else dp[i][1]=a[i];            ans=max(dp[i][0],dp[i][1]);        }        cout<<ans<<endl;    }    return 0;} 





0 0
原创粉丝点击