在这里插入图片描述

题意:

nnn 个时间间隔,一天共有 hhh 小时,每次睡 aia_iai 或者 ai−1a_{i-1}ai1 段时间,如果在 lllrrr 段时间入睡 那么满意度 +1+1+1 ,问满意度最高多少

dp[i][j]dp[i][j]dp[i][j] 表示在第 iii 段在第 jjj 小时睡觉的最大满意值 。然后直接 dpdpdp 即可。

AC代码:

const int N = 2000 + 10;
int n, m, h, l, r;
int ans, res, cnt, pos;
int a[N];
int dp[N][N];
int main()
{
    sdd(n, h);
    sdd(l, r);
    mem(dp, -0x3f);
    rep(i, 1, n)
        sd(a[i]);
    dp[0][0] = 0;
    rep(i, 1, n)
    {
        rep(j, 0, h - 1)
        {
            dp[i][j] = max(dp[i - 1][(j - a[i] + h) % h], dp[i - 1][(j - (a[i]-1) + h) % h]) + (l <= j && j <= r);
        }
    }
    ans = 0;
    rep(i, 0, h - 1)
        ans = max(dp[n][i], ans);
    pd(ans);
    return 0;
}
Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐