洛谷P1714 切蛋糕(雙端佇列)

2022-06-08 19:21:08 字數 566 閱讀 9286

題意:給定n個數,從中選擇最多m個連續的數,使得這些數的和最大

輸入:第一行n,m。第二行,n個整數

輸出:輸出所選擇的數的和

題解:這道題第一感覺肯定是字首和,但是這裡有乙個難點,就是最多是選擇m個連續的數,而不是一定是m個數,所以這裡面的複雜度就會有點高(如果暴力的話)。暴力就是找到第i個數的前面m個字首和的最小值,二者相減,然後去所有i的這二種結果的最大值,這裡如果暴力找到m個字首和的最小值,複雜度會非常高。所以我們可以通過雙端佇列來實現單調佇列的方法來求解最小值。

ac**:

#include#include

using

namespace

std;

const

int n=500000+5

;int sum[n];//

字首和陣列

intmain()

int ans=0

;

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

cout

}

寫於2020/8/6 11:59

洛谷 P1714 切蛋糕

題目描述 今天是小z的生日,同學們為他帶來了一塊蛋糕。這塊蛋糕是乙個長方體,被用不同色彩分成了n個相同的小塊,每小塊都有對應的幸運值。小z作為壽星,自然希望吃到的第一塊蛋糕的幸運值總和最大,但小z最多又只能吃m小塊 m n 的蛋糕。吃東西自然就不想思考了,於是小z把這個任務扔給了學oi的你,請你幫他...

洛谷 P1714 切蛋糕 單調佇列

今天是小z的生日,同學們為他帶來了一塊蛋糕。這塊蛋糕是乙個長方體,被用不同色彩分成了n個相同的小塊,每小塊都有對應的幸運值。小z作為壽星,自然希望吃到的第一塊蛋糕的幸運值總和最大,但小z最多又只能吃m小塊 m n 的蛋糕。吃東西自然就不想思考了,於是小z把這個任務扔給了學oi的你,請你幫他從這n小塊...

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

題目大意 給你乙個大小為 n 的陣列,求滿足區間元素個數 le m 的連續子串行和的最大值。解題思路 假設陣列中第 i 個元素為 a i 我可以定義 sum i 表示前 i 個數之和 sum i sum i 1 a i 則,以 a i 結尾的最大連續子串行和為 sum i min sum j 我們可...