有n個袋子放成一排,每個袋子裡有一定數量的糖果,lzs會隨機選擇連續的幾個袋子,然後拿走這些袋子中包含最多糖果的袋子。現問你,在選擇x個袋子的情況下,lzs最壞情況下,也就是最少會拿到多少個糖果?對於x取值為1到n都分別輸出答案。
input
第一行乙個整數t,表示有t組資料。
每組資料先輸入一行乙個整數n(1<=n<=100000),表示袋子數,接下來一行輸入n個正整數,輸入的第i個數表示第i個袋子所裝的糖果數。
output
每組資料輸出n行,第i行表示lzs隨機取連續的i個袋子時的最壞情況下能拿到的糖果數。
sample input
1
51 3 2 4 5
sample output
133
45
題解:求出以某個數為最大值的最大區間(單調兩次),大區間可以當小區間的用。
#include#include#include#include#include#include#include#include#include#include#include#define ullmax 1844674407370955161
#define llmax 9223372036854775807
#define intmax 2147483647
#define re register
#define pushup() tree[rt]=max(tree[rt<<1],tree[rt<<1|1])
using namespace std;
const int m=100005;
int main()
for(int i=n;i>=1;i--)
for(int i=1;i<=n;i++)
for(int i=n-1;i>=1;i--)
for(int i=1;i<=n;i++)
printf("%d\n",num[i]);
}return 0;
}
單調棧 fzu 2136取糖果
problem 2136 取糖果 有n個袋子放成一排,每個袋子裡有一定數量的糖果,lzs會隨機選擇連續的幾個袋子,然後拿走這些袋子中包含最多糖果的袋子。現問你,在選擇x個袋子的情況下,lzs最壞情況下,也就是最少會拿到多少個糖果?對於x取值為1到n都分別輸出答案。第一行乙個整數t,表示有t組資料。每...
fzu 2136 鍊錶
problem 2136 取糖果 有n個袋子放成一排,每個袋子裡有一定數量的糖果,lzs會隨機選擇連續的幾個袋子,然後拿走這些袋子中包含最多糖果的袋子。現問你,在選擇x個袋子的情況下,lzs最壞情況下,也就是最少會拿到多少個糖果?對於x取值為1到n都分別輸出答案。第一行乙個整數t,表示有t組資料。每...
單調棧 模板 單調棧模板
biu 單調棧主要用於求取左邊第乙個比它大,或者比它小的數。就比如站隊隨便排成一列,可以求到每個人後面第乙個比他高的人。同理可以推廣至右邊,比它矮均可。這就是單調遞增棧 遞減棧,從前至 棧,從後向前入棧的區別了。單調棧比較抽象,非常具有智慧型的想法,可應用的場景相當少,根據幾個經典題目體會它的用法會...