CF競(jìng)賽題目講解_CF387E(樹狀數(shù)組+set)
2022-08-08 10:14 作者:Clayton_Zhou | 我要投稿
//https://codeforces.com/problemset/problem/387/E
題意:
已知一個(gè)長度為n的數(shù)列,每個(gè)數(shù)在1-n之間且各不相同。你可以從這個(gè)數(shù)列中刪數(shù), 刪除規(guī)則:
每次選一段連續(xù)區(qū)間,可以刪除這個(gè)區(qū)間中最小的那個(gè)數(shù),然后每次刪除得到的分?jǐn)?shù)是這個(gè)區(qū)間的長度。
題目要你把原序列刪成一個(gè)規(guī)定的長度為k的序列,并要得分最高。
思路:
貪心策略按數(shù)據(jù)從小到大刪,用set來維護(hù)b數(shù)組,同時(shí)二分查找大于當(dāng)前要?jiǎng)h除數(shù)據(jù)的位置。
假設(shè)當(dāng)前要?jiǎng)h的數(shù)是3,那么r就是距離3最遠(yuǎn)的那個(gè)數(shù)據(jù)下標(biāo),未刪數(shù)據(jù),不在set中, (*it)-1
l就是3的前面一個(gè)數(shù)2的下標(biāo)+1, 未刪數(shù)據(jù),不在set中, *(--it)+1
input
3 2
2 1 3
1 3
標(biāo)簽: