題目大意:
給你乙個大小為 \(n\) 的陣列,求滿足區間元素個數 \(\le m\) 的連續子串行和的最大值。
解題思路:
假設陣列中第 \(i\) 個元素為 \(a[i]\) ,我可以定義 \(sum[i]\) 表示前 \(i\) 個數之和(\(sum[i] = sum[i-1] + a[i]\))。
則,以 \(a[i]\) 結尾的最大連續子串行和為:
\[sum[i] - \min_ (sum[j])
\]我們可以用用單調佇列來維護 \([i-m, i-1]\),只需要保持單調遞增就可以了。
實現**如下:
#include using namespace std;
const int maxn = 500050;
int n, m;
long long a[maxn], sum[maxn], ans = long_long_min;
dequeque;
int main()
for (int i = 2; i <= n; i ++)
cout << ans << endl;
return 0;
}
洛谷 P1714 切蛋糕 單調佇列
今天是小z的生日,同學們為他帶來了一塊蛋糕。這塊蛋糕是乙個長方體,被用不同色彩分成了n個相同的小塊,每小塊都有對應的幸運值。小z作為壽星,自然希望吃到的第一塊蛋糕的幸運值總和最大,但小z最多又只能吃m小塊 m n 的蛋糕。吃東西自然就不想思考了,於是小z把這個任務扔給了學oi的你,請你幫他從這n小塊...
洛谷 P1714 切蛋糕
題目描述 今天是小z的生日,同學們為他帶來了一塊蛋糕。這塊蛋糕是乙個長方體,被用不同色彩分成了n個相同的小塊,每小塊都有對應的幸運值。小z作為壽星,自然希望吃到的第一塊蛋糕的幸運值總和最大,但小z最多又只能吃m小塊 m n 的蛋糕。吃東西自然就不想思考了,於是小z把這個任務扔給了學oi的你,請你幫他...
P1714 切蛋糕 單調佇列
p1714 切蛋糕 單調佇列 gyro永不抽風 最後更新 2020年09月20日 18 09 許可協議 今天是小z的生日,同學們為他帶來了一塊蛋糕。這塊蛋糕是乙個長方體,被用不同色彩分成了n個相同的小塊,每小塊都有對應的幸運值。小z作為壽星,自然希望吃到的第一塊蛋糕的幸運值總和最大,但小z最多又只能...