740-C. Alyona and mex
Tags: sequence
出處:https://codeforces.com/contest/740/problem/C
提交:https://codeforces.com/contest/740/submission/110167700
問題:給定所求陣列之長度 $n\in[1,10^5]$ 以及 $m\in[1,10^5]$ 組描述該陣列之子區間的索引值。現在限定這個陣列只能承裝非負整數,而先前給定的 m 組子區間都各自會有一個不屬於該區間元素的最小非負整數,舉例來說,[0,5,3,1] 所對應到的「最小不包含非負整數」是為 2。如果我們希望現在找到的陣列、它的指定子區間們所對應到的「最小不包含非負整數」們要最大,請問這個值是多少?此時的全域陣列內容為何?
解法:很明顯地,這個最大值必須剛好是所有的給定子區間裡面最短的長度。舉例來說,長度為 4 的子區間我們塞 [0,1,2,3] 會對應到「最小不包含非負整數」4,但是如果塞其他元素的話這個值勢必會往下掉,可以想成有空隙露出來的概念。至於其他的子區間因為長度不會更短,所以更有空間可以填滿 0、1、2、3 這四個數字。現在問題來了!當兩個子區間有重疊的時候,要怎麼保證它們的元素都滿足這個條件而不互相衝突?參考解法提供的元素填法非常酷炫!它主張當答案為 len 的時候,只要按照 0,1,2,…,len-1,0,1,2,…,len-1,… 的要領下去填充,就能保證每個長度不小於 len 的子區間都至少包含 0 到 len-1 的所有元素!
實作:
|
|
結果: