• E


    只需要将时间和次数作为元素DP就行

    
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<cstdio>
    #include<cmath>
    #include<map>
    #include<queue>
    #include<vector>
    #define ll long long
    #define F first
    #define S second
    #define debug(x); printf("debug%d
    ",x);
    #define rep(f,t) for(int i=f;i<=t;i++)
    const int inf=0x3f3f3f3f;
    const int N=2e3+5;
    int dp[N][N];
    int n,h,l,r;
    int a[N];
    using namespace std;
    int main()
    {
        scanf("%d%d%d%d",&n,&h,&l,&r);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
        }
        memset(dp,-1,sizeof dp);//取值为负数的原因是有很多状态是无法达到的,只能由初状态得来。
        dp[0][0]=0;
        int t=0;
        for(int i=1;i<=n;i++)
        {
            for(int j=0;j<h;j++)
            {
                if(dp[i-1][j]>=0)
                {
                    t=(j+a[i])%h;
                    dp[i][t]=max(dp[i][t],dp[i-1][j]+(l<=t&&t<=r));
                    //debug(dp[i][t]);
                    t=(j+a[i]-1+h)%h;
                    dp[i][t]=max(dp[i][t],dp[i-1][j]+(l<=t&&t<=r));
                    //debug(dp[i][t]);
                }
            }
        }
        int ans=0;
        for(int i=0;i<h;i++)
        {
            ans=max(ans,dp[n][i]);
        }
        cout<<ans<<endl;
        return 0;
    }
  • 相关阅读:
    JavaScript基础学习篇
    js,html,css注释大集合
    JS中的专业术语
    BFC给我的帮助以及对hasLayout的认识
    框架
    PHP echo和print语句
    PHP变量
    PHP语法
    PHP入门
    SQLite学习网址
  • 原文地址:https://www.cnblogs.com/switch-waht/p/12485300.html
Copyright © 2020-2023  润新知