CSPS模擬 85


    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需要右括號

      由於貢獻只能計算一次,那么兩次需求只有一次花費

      那么記錄一下有多少左括號曾被需求,等到需要右括號時優先使用那部分的免費左括號。

      右括號需求多時同理

      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM