必要な\(N- \)で朝ランの分、\(I \)数分以内には、実行(D_I \)\メートル、増加疲労\(1 \) 、いつでも疲労を超えることはできません(\メートル\)、1分間の疲労が軽減されます休む\(1 \) 、疲労を休ませる休憩を取ることが必要です)\(\ 0に、疲労回復\(0 \)減少に続行されません。疲労の初期状態\(0 \) 。疲労の終わりに復元する必要があります(0 \)\。遠くに実行するように求めています。\(N \ 10 ^ 4当量 、D_I \当量1000、M \当量500 \)
解決
セット\(F [I] [J ] \) 考慮前表し\(I \)疲労の終了時に、分\(J \) 、得ることができる最大距離、第2の決定は、実行時や転送開始されます休むことができます
読み誤るの問題は、彼の人生を台無しにしました
#include <bits/stdc++.h>
using namespace std;
const int N = 20005;
int n,m,d[N],f[N][505];
void sh(int &x,int y) {
x=max(x,y);
}
signed main() {
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>d[i];
for(int i=1;i<=n;i++) {
for(int j=0;j<=m;j++) {
sh(f[i][j+1],f[i-1][j]+d[i]);
if(j==0) sh(f[i][j],f[i-1][j]);
sh(f[i+j-1][0],f[i-1][j]);
}
}
cout<<f[n][0];
}