Codeforces 1324 E. Sleeping Schedule(DP)_时间间隔

题意:

Codeforces 1324 E. Sleeping Schedule(DP)_时间间隔_02 个时间间隔,一天共有 Codeforces 1324 E. Sleeping Schedule(DP)_时间间隔_03 小时,每次睡 Codeforces 1324 E. Sleeping Schedule(DP)_时间间隔_04 或者 Codeforces 1324 E. Sleeping Schedule(DP)_时间间隔_05 段时间,如果在 Codeforces 1324 E. Sleeping Schedule(DP)_时间间隔_06Codeforces 1324 E. Sleeping Schedule(DP)_时间间隔_07 段时间入睡 那么满意度 Codeforces 1324 E. Sleeping Schedule(DP)_时间间隔_08

Codeforces 1324 E. Sleeping Schedule(DP)_时间间隔_09 表示在第 Codeforces 1324 E. Sleeping Schedule(DP)_时间间隔_10 段在第 Codeforces 1324 E. Sleeping Schedule(DP)_时间间隔_11 小时睡觉的最大满意值 。然后直接 Codeforces 1324 E. Sleeping Schedule(DP)_时间间隔_12

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;
}