題解 lg2034 選擇數字

2022-03-06 13:16:12 字數 602 閱讀 7737

給定一行n個非負整數a[1]..a[n]。現在你可以選擇其中若干個數,但不能有超過k個連續的數字被選擇。你的任務是使得選出的數字的和最大。

設\(f(i,0)\)表示考慮到數字\(i\)並選擇\(i\)的最大和,\(f(i,1)\)表示考慮到數字\(i\)並選擇\(i\)的最大和

那麼\[f(i,0)=min(f(i-1,0),f(i-1,1))

\]\[f(i,1)=min(f(j,0)+sum_i-sum_j),i-k\leq j \leq i-1

\]然後就可以單調佇列優化了

#includeusing namespace std;

#define int long long

int const maxn=1e5+10;

int n,k;

int f[maxn][2],e[maxn],q[maxn],d[maxn];

signed main()

int h=0,t=1;

for(int i=1;i<=n;i++)

printf("%lld\n",max(f[n][0],f[n][1]));

return 0;

}

luogu P2034 選擇數字

題面傳送門 對於這道題,簡單粗暴的dpdp dp是不難想的,dpdp dp方程式為fi max fj 1 s j 1i as f i max f sum ia s fi ma x fj 1 s j 1i as 其中max i k 0 j i 1max i k,0 leq j leq i 1 max ...

洛谷P2034 選擇數字

題目描述 給定一行n個非負整數a 1 a n 現在你可以選擇其中若干個數,但不能有超過k個連續的數字被選擇。你的任務是使得選出的數字的和最大。輸入格式 第一行兩個整數n,k 以下n行,每行乙個整數表示a i 輸出格式 輸出乙個值表示答案。乙個小dp 我們設f i 為不選i時候的最優值 然後我寫了個6...

P2034 選擇數字 單調佇列

p2034 選擇數字 單調佇列 gyro永不抽風 最後更新 2020年09月20日 21 09 許可協議 給定一行n個非負整數a 1 a n 現在你可以選擇其中若干個數,但不能有超過k個連續的數字被選擇。你的任務是使得選出的數字的和最大。第一行兩個整數n,k 以下n行,每行乙個整數表示a i 輸出乙...