生日禮物 優先佇列,鍊錶,貪心

2021-09-23 08:11:07 字數 956 閱讀 4082

題目鏈結

題目:

翰翰18歲生日的時候,達達給她看了乙個神奇的序列 a1,a2,…,an。

她被允許從中選擇不超過 m 個連續的部分作為自己的生日禮物。

翰翰想要知道選擇元素之和的最大值。

你能幫助她嗎?

輸入格式

第一行包含兩個整數n,m。

第二行包含n個整數a1~an。

輸出格式

輸出乙個整數,表示答案。

資料範圍

1≤n,m≤10^5

|ai|≤10^4

輸入樣例:

5 2 

2 -3 2 -1 2

輸出樣例:

5
這道題和下邊這道題做法類似:

#includeusing namespace std;

const int maxn=1e5+5;

typedef pairpar;

priority_queue,greater> q;

int a[maxn];

int l[maxn],r[maxn];

bool st[maxn];

void remove(int p)

int main()

n=k;

int ans=0;

int cnt=0;

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

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

}while(cnt>m));

}else

}cout

}

生日禮物(單調佇列)

小西有一條很長的彩帶,彩帶上掛著各式各樣的彩珠。已知彩珠有n個,分為k種。簡單的說,可以將彩帶考慮為x軸,每乙個彩珠有乙個對應的座標 即位置 某些座標上可以沒有彩珠,但多個彩珠也可以出現在同乙個位置上。小布生日快到了,於是小西打算剪一段彩帶送給小布。為了讓禮物彩帶足夠漂亮,小西希望這一段彩帶中能包含...

bzoj2288 生日禮物(貪心)(堆)(鍊錶)

ftiasch 18歲生日的時候,lqp18 31給她看了乙個神奇的序列 a1,a2,an.她被允許選擇不超過 m 個連續的部分作為自己的生日禮物。自然地,ftiasch想要知道選擇元素之和的最大值。你能幫助她嗎?相鄰的兩個數如果同為正數或負數可以合併成乙個大的正數或負數,這樣整個數列就成了正負交替...

BZOJ2288 生日禮物 堆 鍊錶 貪心

顯然符號相同的一段會一起被選,因此先合併符號相同的各段,最終得到正數負數相間的序列。設此時有 cnt cntcn t 個正數,且其和為 sum sumsu m,若 cnt m cnt leq m cnt m,則答案為 sum sumsu m。否則,每次找出絕對值最小的數,將其與序列中相鄰兩數合併,直...