E. Horaire de sommeil

E. Horaire de sommeil
limite de temps par test
2 secondes
limite de mémoire par test
256 mégaoctets
contribution
entrée standard
production
sortie standard

Vova avait un horaire de sommeil assez bizarre. Il y a  h h heures dans une journée. Vova dormira exactement  n n fois. Le  i ième fois qu'il dormira exactement après  un i aÌ heures à partir du moment , il se réveilla. Vous pouvez supposer que Vova s'est réveillé exactement au début de cette histoire (l'heure initiale est  0 0). Chaque fois que Vova dort  exactement un jour (en d'autres termes,  h h heures).

Vova pense que le  i -ème temps de sommeil est  bon s'il commence à dormir entre les heures  l l et  r r inclus.

Vova peut se contrôler et avant la  i ième fois, il peut choisir entre deux options: s'endormir après  une heure i ai ou après une heure  i - 1 ai − 1.

Votre tâche consiste à dire le nombre maximum de  bons moments de sommeil que Vova peut obtenir s'il agit de manière optimale.

Contribution

La première ligne de l'entrée contient quatre entiers  n , h , l n, h, l et  r r ( 1 n 2000 , 3 h 2000 , 0 l r < h 1≤n≤2000,3≤ h≤2000,0≤l≤r <h) - le nombre de fois où Vova s'endort, le nombre d'heures dans une journée et le segment du  bon temps de sommeil.

La deuxième ligne de l'entrée contient  n n entiers  a 1 , a 2 , , a n a1, a2,…, an ( 1 a i < h 1≤ai <h), où  a i ai est le nombre d'heures après quoi Vova va dormir le  i ième fois.

Production

Imprimez un entier - le nombre maximum de  bons moments de sommeil que Vova peut obtenir s'il agit de manière optimale.

Exemple
contribution
Copie
7 24 21 23 
16 17 14 20 20 11 22
production
Copie
3
Remarque

Le nombre maximum de  bons moments dans l'exemple est de  3 3.

The story starts from t=0t=0. Then Vova goes to sleep after a11a1−1 hours, now the time is 1515. This time is not good. Then Vova goes to sleep after a21a2−1 hours, now the time is 15+16=715+16=7. This time is also not good. Then Vova goes to sleep after a3a3 hours, now the time is 7+14=217+14=21. This time is good. Then Vova goes to sleep after a41a4−1 hours, now the time is 21+19=1621+19=16. This time is not good. Then Vova goes to sleep after a5a5 hours, now the time is 16+20=1216+20=12. This time is not good. Then Vova goes to sleep after a6a6 hours, now the time is 12+11=2312+11=23. This time is good. Then Vova goes to sleep after a7a7 hours, now the time is 23+22=2123+22=21. This time is also good.

 

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <set>
#include <queue>
#include <map>
#include <sstream>
#include <cstdio>
#include <cstring>
#include <numeric>
#include <cmath>
#include <iomanip>
#include <deque>
#include <bitset>
//#include <unordered_set>
//#include <unordered_map>
//#include <bits/stdc++.h>
//#include <xfunctional>
#define ll  long long
#define PII  pair<int, int>
using namespace std;
int dir[5][2] = { { 0,1 } ,{ 0,-1 },{ 1,0 },{ -1,0 } ,{ 0,0 } };
const long long INF = 0x7f7f7f7f7f7f7f7f;
const int inf = 0x3f3f3f3f;
const double pi = 3.14159265358979;
const int mod = 1e9 + 7;
const int maxn = 2005;
//if(x<0 || x>=r || y<0 || y>=c)
//1000000000000000000
 
inline ll read()
{
    ll x = 0; bool f = true; char c = getchar();
    while (c < '0' || c > '9') { if (c == '-') f = false; c = getchar(); }
    while (c >= '0' && c <= '9') x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
    return f ? x : -x;
}
int n, h, l, r;
int check(int x)
{
    return l <= x && x <= r;
}
 
int main() 
{
    cin >> n >> h >> l >> r;
    vector<int> a(n+1);
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    vector<vector<int>> dp(maxn, vector<int>(h+1, INT_MIN));
    dp[0][0] = 0;
    for (int i = 1; i <= n; i++)
    {
        for (int j = 0; j <= h; j++)
        {
            dp[i][j] = max(dp[i-1] [(j - a [i] + h)% h], dp [i- 1 ] [(j - a [i] + 1 + h)% h]) + check (j); 
        } 
    } 
    int res = * max_element (dp [n] .begin (), dp [n] .end ()); 
    cout << res << endl;
    retourner  0 ; 
}

 

 

Je suppose que tu aimes

Origine www.cnblogs.com/dealer/p/12683135.html
conseillé
Classement