首先ORZ PB優化
考慮在k的位置把一個合法序列掰成兩半:\([1,k-1]\)和\([k+1,n]\)spa
先考慮擺\([k+1,n]\)的方案數,容易發現剩下的是一個單調隊列,每次能夠從頭尾兩端取。設\(A_i\)表示有\(i\)個元素的單調隊列的取法,有\(A_0=A_1=1,A_i=2A_{i-1}(i\geq 2)\),顯然這能夠預處理翻譯
而後是考慮\([1,k-1]\)的方案數。能夠發現code
設\(f[i][j]\)表示填了\(i\)個數,最小值爲\(j\)的方案數排序
考慮新加一個數\(k\),若是\(k<i\),那直接轉移,不然只有當前沒填過的最大的\(k\)能加入序列,不然會構成大於2個單調降低序列或者破壞性質2.隊列
因此有\(f[i][j]=\sum\limits_{k>j} f[i][k]+f[i-1][j]\)遊戲
後綴和優化便可get
代碼it
首先 和你旁邊的人 手玩一下樣例和本身造的樹io
而後你旁邊的人就會罵你把必敗態給他玩
而後你會發現,若是存在葉子節點,選它的父親能夠迫使後手選葉子節點,重複這個過程。
再想一下,若是把已經塗色的點刪掉,這個過程就是貪心求完美匹配的過程。
因而有結論:若是存在完美匹配,後手勝,不然先手勝。
一個取模引起的血案
這東西正着算很難算,考慮反着算 而後你就作完了
設\(f_{x,k}\)表示選k個點組成的連通圖中不包括x的方案數,易知這k個點都在x的子樹中
因此\(f_{x,k}=C^n_k-\sum\limits_{u\in x} C^{sz_u}_k\),\(ans_k=\sum f_{x,k}=n*C^n_k-\sum\limits_x\sum\limits_{u\in x} C^{sz_u}_k\)
設\(sz_u=i\)的個數爲\(num_i\),則
\(ans_k=n*C^n_k-\sum\limits_{i=1}^{n-1} num_i*C^{i}_k\\=n*C^n_k-\sum\limits_{i=1}^{n-1} \frac{i!}{(i-k)!k!}\\=n*C^n_k-\frac{1}{k!}\sum\limits_{i=1}^{n-1} \frac{i!num_i}{(i-k)!}\)
令\(A_i=num_i*i!\),\(B_i=\frac{1}{(n-i)!}\),這就是一個套路的NTT
從原圖中隨便取一個凸多邊形出來,設頂點點集爲\(S\),凸多邊形內(不含頂點)的點的集合爲\(T\)
設\(T\)的子集爲\(T'\),則$ S\cup T'$有\(2^{|T|}\)種取法,即\(2^{|S\cup T|-|S|}\)種取法,是否是和原題求的東西很像呢?也就是說,一個存在凸包的點集對答案有1的貢獻。
因而就枚算一下不存在凸包的點集,即所有點共線的點集的個數,直接暴力\(O(n^3)\)
首先能夠發現,不互質的數的相對位置不會改變。
而後你按字典序,對一個數\(x\),把它和儘可能小的不和它互質的數連邊(這個我不知道怎麼講清楚,看代碼8……),而後你就獲得了一堆拓撲圖。把它們丟去拓撲排序,按照題意,每次必定會把當前最大的入度爲0的點輸出,用優先隊列維護拓撲排序的過程便可。
以前按奇數的個數討論勝負,一看到題解"奇數個偶數"我就知道我想假樂
而後從新想
若是這個序列中若是存在1,把這個序列中(不爲1的數-1)加起來,若是和爲奇數先手勝,不然後手勝。
考慮前後手的一輪操做,在沒有除法的狀況下,能夠保證奇/偶數個數的奇偶性不變,一樣,在這個過程當中,gcd爲奇數,因此除法不影響奇/偶數個數的奇偶性。而後變到1就不能操做,偶數個數整體趨勢仍是減小的。當只剩一個偶數和一堆1時,根據上面的結論先手勝。因此有偶數個奇數時,先手必勝。
不然若是有偶數個偶數時,考慮遊戲中任意一個局面,它的gcd爲1,說明原序列中有\(\geq 1\)個奇數。也就是說,若是先手對偶數執行-1操做,gcd一直爲奇數,除掉了之後奇偶數的個數不變,即變成了有奇數個偶數的狀況,此時先手必敗。那操做奇數呢?只剩下一個奇數時才能這麼幹,不然仍是先手必敗,理由同上。因此有偶數個偶數,且奇數個數\(> 1\)時,後手必勝,不然除掉gcd繼續處理。
模擬一下就完了
首先能夠建一個\(i\rightarrow p_i\)的圖,它顯然會有不少個環。一個\(i\rightarrow a_i\)的圖是由\(i\rightarrow p_i\)或\(i\rightarrow p_{p_i}\)的邊組成
而後考慮一個環在通過這樣子變化後會變成怎樣:
全是\(i\rightarrow p_i\)的邊
和原圖同樣
全是\(i\rightarrow p_{p_i}\)的邊
奇環沒被拆掉,不過和原來的環長得不同。
偶環被拆成兩個大小同樣的環。
兩種邊都有
最後會造成環套樹,且樹是鏈的形態,一個環點只能掛一條鏈。
如今從\(i\rightarrow a_i\)反推會\(i\rightarrow p_i\)
環
偶環和自環沒變化,貢獻爲1
奇環能夠變得不同也能夠維持原樣,貢獻爲2
合併環,設合併\(2i\)個長爲\(l\)的環。因爲環的形態是固定的,因此合併兩個環的方案數爲\(l\) . 而後環對內的順序和環對的相對順序沒有關係,因此最後方案數爲\(\frac{l^i*(2i)!}{i!2^i}\)
環套樹
設掛鏈的環點爲關鍵點,鏈長爲\(len\),一個點和它後邊第一個關鍵點的距離爲\(dis\)
若是\(len<dis\),鏈的第一個點有兩個地方塞,因此有兩種塞法
若是\(len=dis\),只有一種塞法
不然沒有塞法
加法/乘法原理統計一下就好了
1操做map判斷有無連邊,2操做可撤銷並查集維護
上面是假的,在線要寫ETT,然而LOJ最短的ETT板子也有6k……
考慮\(lstans\)只有0和1兩種取值,而後就能夠把一個詢問\(q_i\)拆成兩個\(q_{i,1},q_{i,2}\),組成全局詢問。對全局詢問處理,處理出和下一個和\(q_{i,j}\)徹底同樣的詢問出現的時間\(nxt\),則\(q_{i,j}\)這個詢問存在的時間爲\([i+1,nxt]\)。而後線段樹分治+可撤銷並查集進行處理。
處理方法:分治按時間分治。記上次的答案爲\(lstans\),而後處理出真的詢問/修改。若是是詢問直接詢問。若是是修改就拿個map記一下這個修改有沒有被加過,沒被加過就把這個修改對應的區間加上這條邊,不然不加。
對於\(lstans\oplus 1\)對應的修改,也要判斷是否能夠加到線段樹裏進行加邊,可是不喲用修改map!!
正確性嘛……沒有涉及到的邊會一直加,直到被涉及到……
哎金華集訓講過來着?證實我在睡覺
這裏意譯翻譯一個官方題解,感受很妙:
考慮直接容斥:
求全部\(i\)知足\(p_i^2+i^2<(2n)^2+1\)的狀況下,欽定\(k\)個\(i\)知足\(p_i^2+i^2<n^2\)的方案數。設\(l_i\)表示知足\(x^2+i^2<n^2\)最大的\(x\),\(r_i\)表示知足\(x^2+i^2<(2n)^2+1\)最大的\(x\).令\(被欽定了沒被欽定h_i=l_i(被欽定了)\;or\;r_i(沒被欽定)\)。把\(h_i\)從小到大排序,則方案數爲\(\prod\limits_{i=0}^{2n-1} (h_i-i)\)
而後你 就須要和出題人同樣有強大的腦洞 要考慮一下\(h\)有什麼限制:
把\(l_i\)和\(r_i\)劃分紅三個集合\(A\),\(B\),\(C\):
設\(A\),\(B\),\(C\)裏的元素分別爲\(a\),\(b\),\(c\),把它們升序排序會發現全部的\(c\)在\(a\)和\(b\)的前面。
而後對於\(n\leq i\leq 2n-1\),\(h_i\)必須等於\(r_i\)。對於\(0\leq i \leq n-1\),\(h_i\)能夠在\(l_i,r_i\)裏選一個
先枚舉選了多少個\(a\),而後考慮到\(i\)變大時\(l_i\)和\(r_i\)都是遞減的,且對於同一個\(i\),\(l_i<r_i\)。因此設\(dp[i][j]\)表示dp到第\(i\)個數,選了\(j\)個\(a\). 先把全部的\(l,r\)排序,而後分類討論這是\(a\)仍是\(b\)仍是\(c\),再記錄一下填了有多少個\(b\)就能夠\(O(1)\)肯定一個數的位置啦,就完了8
一題拖一星期我也真是厲害……
樹是個二分圖,因而把它黑白染色,設黑點權值爲\(-1\),白點權值爲\(1\),以\(x\)爲根的子樹和爲\(f_x\)
則答案爲\(\sum\limits_{i=1}^n |f_i|\)
咱們把黑點當作洞,把白點當作球。這個式子就是讓\(i\)子樹內全部子樹內全部的洞和球都匹配完。爲了達成這目的,咱們須要經過父邊運一些球進來或運出去
設環邊鏈接的兩個點爲\(u,v\)。所以\(u,v\)同色,就是咱們操做一次,能夠往\(u,v\)同時放下或同時拿出一個球,因此能夠計算出操做\((u,v)\)的次數(即\(f_1/2\)),剩下的按樹的作
此時\(u,v\)不一樣色,所以操做一次\(u\rightarrow v\)就至關於把\(u\)和它祖先的\(f\)都\(+1\),把\(v\)和它祖先的\(f\)都\(-1\)(\(v\rightarrow u\)同理)
設操做\(u\rightarrow v\)了\(x\)次(\(x<0\)即爲操做\(v\rightarrow u\))
即要求\(\sum\limits_{x\in fa_u}|f_x-x|+\sum\limits_{y\in fa_v} |-f_y-x|\)的最小值
\(x\)取中位數便可