CF1053E Euler tour 構造


正解:構造

解題報告:

傳送門!

這種題目一般都是首先考慮合法性

這題也不例外,思考怎么樣是合法的呢?

有四點:

1)a[1]=a[2n-1],顯然不說

2)若a[i]=a[j],則(j-i)&1==0,即ij同奇偶性,dfs序的性質

3)若a[x]=a[y],a[m]=a[n],則(x-m)*(y-n)>0,這個可以用st表做(后面會詳細解釋下st表的,,,然后有時間會開個倍增專題港下st表什么的QwQ

4)a[i]≠a[i-1]

然后判完可行性就考慮構造鴨

考慮如果存在a[x]=a[y],就說明[x,y]這一段是棵子樹,於是用一點兒分治思想,先做[x,y],這樣就解決了一個子問題,就可以刪去[x+1,y],看到這種刪除操作就應該能想到並查集維護一波,over

然后這么操作完之后就不會剩下相等的非0數了

然后接着考慮,如果有xy0或0yx的排列,就直接把0=x,然后把xy丟了(就還會剩一個x

如果有xyz這樣的序列,就說明不可能了搞不出來辣

然后如果上面這個操作也搞完之后,如果數據是可構造的,就會變成,這樣子:X0...0A10...0A20...X

然后就遞歸着做就好辣

設當前樹根為rt,搞個雙端隊列,把當前的數據放進去,每次看隊頭隊尾兩元素(h&t

如果h=t=0,找到一個麻油出現過的值x,令h=t=rt=x,彈去h&t

如果h*t=0,h2+t2!=0,不妨設h=0,t!=0,令rt=h=t,彈去h&t,

如果h!=0,t!=0,不妨選h,令h旁邊的點(必為0)=rt,彈去h&rt

就這樣,,,具體看代碼趴QAQ

代碼咕了,,,中午也許會放趴QAQ


免責聲明!

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



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