題目鏈結
題目:
翰翰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。否則,每次找出絕對值最小的數,將其與序列中相鄰兩數合併,直...