码迷,mamicode.com
首页 > 其他好文 > 详细

Sleeping Schedule CodeForces - 1324E dp

时间:2020-03-21 20:51:12      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:include   string   判断   memset   mes   sleep   space   i++   else   

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=2010;
int a[N],f[N][N];
int read() {
    int res=0,ch,flag=0;
    if((ch=getchar())=='-')             //判断正负
        flag=1;
    else if(ch>='0'&&ch<='9')           //得到完整的数
        res=ch-'0';
    while((ch=getchar())>='0'&&ch<='9')
        res=res*10+ch-'0';
    return flag?-res:res;
}
int main() {
    int n=read(),h=read(),l=read(),r=read();
    //不睡觉的时间
    for(int i=1; i<=n; i++)
        a[i]=read();
    memset(f,-1,sizeof f);
    for(int i=0; i<h; i++)
        f[0][i]=0;
    //枚举睡觉次数
    for(int i=1; i<=n; i++)
        for(int j=0; j<h; j++) {
            if(f[i-1][j]==-1)
                continue;
            int res;
            //j是醒来的时间
            //res是进入下一次睡眠的时间
            res=(j+a[i]-1)%h;
            f[i][res]=max(f[i][res],f[i-1][j]+(l<=res&&res<=r));
            res=(j+a[i])%h;
            f[i][res]=max(f[i][res],f[i-1][j]+(l<=res&&res<=r));
        }
    int ans=0;
    for(int i=0; i<h; i++)
        ans=max(ans,f[n][i]);
    cout<<ans<<endl;
    return 0;
}

Sleeping Schedule CodeForces - 1324E dp

标签:include   string   判断   memset   mes   sleep   space   i++   else   

原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12541953.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!