P3709 大爺的字串題

2022-05-13 10:28:45 字數 589 閱讀 8864

p3709 傳送門

lxl出的語文題

其實轉化一下就是求將當前區間最少拆分成多少個嚴格單調上公升序列(可不連續)

再轉化一下就是求區間內的眾數個數

本來求眾數的套路是主席樹+二分

這樣在刪除時僅當$sum[cnt[dat[pos]]]==1$時才減少$cur$

#include using

namespace

std;

const

int maxn=5e5+10

;struct queryqry[maxn];

intn,m,cnt[maxn],sum[maxn],res[maxn],dat[maxn],dsp[maxn],tot,blk,cur;

int cal(int x)

bool

cmp(query x,query y)

void upd(int pos,int

val)

intmain()

for(int i=1;i<=m;i++) printf("

%d\n

",res[i]);

return0;

}

P3709 大爺的字串題(50分)

在那遙遠的西南有一所學校 被和諧部分 然後去參加該省省選虐場 然後某蒟蒻不會做,所以也出了乙個字串題 給你乙個字串a,每次詢問一段區間的貢獻 貢獻定義 每次從這個區間中隨機拿出乙個字元x,然後把x從這個區間中刪除,你要維護乙個集合s 如果s為空,你rp減1 如果s中有乙個元素不小於x,則你rp減1,...

P3709 大爺的字串題 腦子 莫隊

簡化題意 區間眾數出現次數?為什麼?原因是,貪心的想,我們要劃分成盡量少的嚴格遞增序列,這樣rp掉的最少。設區間眾數出現次數為 x 那我們至少要分成 x 段嚴格上公升序列。include include include include include define r register int us...

P3709 大爺的字串題 莫隊 結論

p3709 大爺的字串題 有乙個顯然的結論 一段區間裡最小答案為眾數的個數 用莫隊來離線求眾數 tmp i 表示出現 i 次的數的個數,num i 表示 i 出現的次數 縮小區間 答案可能減小,看答案所在的 tmp 是否不唯一 擴大區間 答案增大 includetypedef int ll cons...