WWB大佬的bitset映射真是太強了!
%%%
T1
觀察樣例,猜規律。
T2
對題目的翻譯工作用了很長時間
翻譯錯了好幾次..
觀察到奇環沒法染色,選的邊必須把奇環弄斷
如果在偶環上,偶環就變得沒法染色了,所以不能在偶環上
翻譯完成后
這是什么?
算了亂搞吧
先弄個樹出來,然后對於非樹邊,會和樹邊形成一個環
樹上差分一下在哪個環里,維護一下有幾個奇環,那么樹上的邊必須不在偶環里然后必須在所有奇環里
好有道理的樣子,打出來交了。
考試快結束了
非樹邊的貢獻??
完戲
趕緊再亂搞一發,我猜每個非樹邊只在一個奇環里!(瞎猜)
所以直接給非樹邊的num賦值成1算了
然后他就A了(RP--?)
然后經大神skyh指點,我跟正解撞上了。。
(又開心又怕RP--)
其實對非樹邊num=1的賦值沒有問題,
如果有兩個奇環的話,那么兩條非樹邊一定分離,或者形成偶環廢了
然后樹邊的貢獻就嚴格按照定義(題意)來就沒問題
%%%skyh被大樣例坑了錯失正解
T3
再%%%WWB
沒想到啊,真沒想到,還能
真·大暴力·STL映射STL
找到相關詢問集合相同的所有下標
然后讓這些下標分別平衡,就可以滿足題意。//平衡:把這個子序列單獨拎出來,它的左右括號完美地匹配
否則一定不滿足,因為每個邊界都必須滿足在其方向上的“括號需求”為0//括號需求:需要在最左邊加上多少左括號才能使右括號都得到匹配,可能為0,右邊同理
如何平衡?用一個貪心
為了防止括號資源短缺,每個子序列內部的不平衡能自己抵消就自己抵消//內部的不平衡:既有左括號需求又有右括號需求
代價為$(min(Lneed,Rneed)+1)/2$//換一對,滿足兩組匹配,所以除以2
如果括號不平衡,從外部引進//一種括號過多,用一些這種括號換一些其他的
引進量為$abs(Lneed-Rneed)/2$//換一個滿足一組匹配,減少一組需求,所以除以2
同時維護兩個變量$NeedL NeedR$
用以平衡不同子序列之間的括號流動,如果子序列A需要左括號,B需要右括號
由於貢獻只能計算一次,那么兩次需求只有一次花費
那么記錄一下有多少左括號曾被需求,等到需要右括號時優先使用那部分的免費左括號。
右括號需求多時同理