洛谷P1714 切蛋糕 題解 單調佇列

2022-05-19 21:53:11 字數 612 閱讀 9572

題目大意:

給你乙個大小為 \(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最多又只能...