CF1477F. Nezzar and Chocolate Bars
顯然每一段的每個位置切的概率相同,ans=Σ時間t時未結束的概率
容斥有i段>k,枚舉每段切m刀,則有
\(\large \sum \prod_i (-1)^i \sum_m \binom{m+1}{i}(\frac{L-iK}{Len})^m\frac{x^m}{m!}\),其中Len=ΣL
其中\((a/b)^m\)就是在里面切m刀的概率,可以等於\(\large \frac{\binom{ax}{m}}{\binom{bx}{m}}\),x->inf,得到\(\large \frac{(ax)^{\text{m次下降冪}}}{(bx)^{\text{m次下降冪}}}\),因為分母無限大所以把下降冪改為冪,得到(a/b)^m
\(=\large \sum \prod_i (-1)^i \sum_m (\binom{m}{i}+\binom{m}{i-1})(\frac{L-iK}{Len})^m\frac{x^m}{m!}\)
考慮C(m,i)
\(\large =(-1)^i\binom{m}{i}p^m\frac{x^m}{m!} =\frac{(-1)^i}{i!}p^ix^ie^p\)
另一邊同理,dp得到類似\(px^ae^b\)的東西,要對m=0~inf求[x^m]
\(\large \sum_m[x^m] m!x^ae^b=\sum_m\frac{b^{m-a}m!}{(m-a)!}=a!\sum_m \binom{m}{a}b^{m-a}=a!*F(1)\)
其中\(\large F(x)=x^a\frac{1}{(1-bx)^{a+1}}\),代入即可
直接dp是O(L^3),發現a=b-選C(m,i-1)的個數,所以另一維變為n,時間O(nL^2)
CF1477D. Nezzar and Hidden Permutations
首先顯然度數為n-1的點無法貢獻,去掉后剩下的就是答案上界,考慮構造得到
在補圖上考慮,把補圖划分成若干匹配點對+掛在點對上的點,這個求出每個點連出去的mex,如果都沒有選就加到點對里,否則掛在點上,最后還沒有變為點對就加進去
對於點對(u,v),如果只有最多一邊有掛着的點就把另一邊提出來,變成x->其余點的形式,然后對剩下的填(1,2),(2,3),(3,4)..(k,k+1),x填(k+1,1),由於x都有邊所以不會判斷,連出的內部滿足,塊往外的由於標號連續也滿足
如果uv都有就把u-v斷開變成兩個來構
loj2565. 「SDOI2018」舊試題
用d(x)來代替σ0(x)
\(\sum_i \sum_j \sum_k d(ijk)=\sum_i \sum_j \sum_k \sum_{x|i} \sum_{y|j} \sum_{z|k} [(x,y)=1][(x,z)=1][(y,z)=1]\)
\(=\sum_x \sum_y \sum_z (A/x)(B/y)(C/z) [(x,y)=1][(x,z)=1][(y,z)=1]\)
\(=\sum_x \sum_y \sum_z (A/x)(B/y)(C/z) (\sum_{a|(x,y)}\mu(a))(\sum_{b|(x,z)}\mu(b))(\sum_{c|(y,z)}\mu(c))\)
\(=\sum_a \sum_b \sum_c \mu(a)\mu(b)\mu(c) F(A,[a,b])F(B,[a,c])F(C,[b,c])\)
其中F(A,x)=Σ(A/i)*[x|i]
然后lcm不超n且μ≠0的只有760000左右,建圖找三元環O(m√m),具體把度數大的連向度數小的,按順序枚舉連續三個,度數<√m的會算O(m√m),度數>=√m的只會再更大的算到它,每個會被算√m次,一層加在一起算m次所以總次數O(m√m)
ll的神奇做法:https://blog.csdn.net/linli2019/article/details/113096077
設e為質因子次數,\(d(ijk)=\prod(e_i+e_j+e_k+1)\)
\(=\prod((e_i+1)(e_j+1)(e_k+1)-(e_i+1)e_je_k-e_i(e_j+1)e_k-e_ie_j(e_k+1)+2e_ie_je_k)\)
然后對於某個質數p,如果要把(e+1)變為e就等於把d(x)變為d(x/p)
枚舉后面選四部分的質數的積xyza,有
\(ans=\sum_{xyza,ayz|i,axz|j,axy|k}\mu(xyz)2^{\text{(a質因子個數)}}d(i/ayz)d(j/axz)d(k/axy)\)
保證積<=n即可限制xyza的范圍,同時xyza要互質(用μ判)
直接枚舉時間O(n√n),分析見ll博客
CF1463F. Max Correct Set
顯然對於一個長p=x+y的合法串,將其復制后仍合法,因為若ai=ai+x=ai+x-p=ai-y,與原串合法矛盾
奇妙結論:存在循環節嚴格為p的最優解(暫時不會證
然后直接狀壓
CF1474F. 1 2 3 4 ...
把折線的頂點上下划兩條線,畫出的2n條線把折線分為n^2個段,直接在段上dp,記錄最大值以及方案數
把一行的向上/下兩種段分為一類一次轉移一類的所有,從后往前考慮以當前段位末尾的轉移開頭
顯然最優解值一定連續,所以用桶維護后面的貢獻,枚舉段的貢獻組合數算,向上的段選連續的向下的段選最多一個
枚舉的狀態有n^2,往前只會轉移到相同的n個,組合數枚舉向下段放多少個爆算是n^2所以是O(n^5),把組合數提到外面變為O(n^4),再遞推處理組合數可以O(n^3)(需要考慮(C(n+i,m)這種,懶得寫)
牛客挑戰賽47G 子串
對S建PAM,離線詢問掃r把r激活,接着把T插進去線段樹詢問最大r,如果當前的l已經超了那么再往下走長度增加r減小一定不合法,所以超了就往上跳,時間O(|S|+|T|log|S|)
6948. 【2020.01.12冬令營模擬】小 ω 的魔方
一共五種置換:
①不動(1) ②轉90°(6) ③轉180°(3) ④兩個對頂點轉±120°(8) ⑤兩條對棱的面旋轉180°(6)
發現有可能有對頂點互相移,如果有的話一定無法均分,所以合法的每個環大小相同
變為求((a)*(b)*...*(f))^m,先算出來后短多項式求冪(\(g(x)=f^a(x),f(x)g'(x)=af'(x)f^a(x)=af'(x)g(x)\))
agc031F - Walk on Graph
神仙題
由於圖連通,所以可以(u,x)->(v,2x+c)->(u,4x+3c),因為mod為奇所以4有逆元,最后能走回(u,x)所以連雙向邊,如果(S,0)和(T,r)連通就yes
對於兩條邊ab,可以走到(u,4x+3a)和(u,4x+3b),即(u,4x+3a)-(u,x)-(u,4x+3b),因為4x+3a能表示任何數所以換元為新的x,變成(u,x)-(u,x+3(a-b))
接着把結論擴展,如果v有兩條邊ab,可以從u走到v,然后把系數調為3*2^k*(a-b),然后退回u得到(u,x+3(a-b)),同理擴展與v相鄰的可以得到任意兩條邊的差
設g=gcd(a-b,b-a)(%mod),則(u,x)-(u,x+3g),可以把mod->gcd(mod,3g)
注意此時滿足g|mod|3g,因為g|(a-b)且g|(b-a),得到g|0(%mod),即g|mod
此時所有邊權模g相同,設為z,考慮轉化把z去掉:把狀態第二維+z邊權-z,有(u,x)-(u,x+z)'-(v,2x+2z+c-z)'-(v,2x+c+z)'-(v,2x+c),和原問題等價
現在所有邊都是g的倍數,因為mod=g/3g,所以邊權為(0/1/2)g,那么第二維可以寫成\(2^pz+qg\)的形式,由於(u,x)->(u,4x+3c),c為g倍數所以模mod為(u,4x),即可以把p按奇偶分類
(因為\(a^{\varphi(mod)}\equiv 1\),而mod為奇數所以phi為偶數,奇偶不會相連)
並查集連完后枚舉q和p的奇偶,預處理所有(2^p-1)z直接判斷(T,z)和(S,z+r)相連
CF1473G. Tiles
每次操作先調成前后不變,然后只要能走到右邊路徑都合法,直接ntt,要預處理卡常
CF1473F. Strange Set
把i連aj|ai的最后一個j,最大權閉合子圖
CF1386B. Mixture
首先把三元組變為(1,a,b),如果第一維為0就找一維不為0的,然后對於兩個(1,a1,b1)和(1,a2,b2),能取到的顯然是兩點連線,多個就是凸包內部的所有點,對於(0,a,b)的可以把第一維當成lim->0
維護夾角,如果恰好和詢問點重合為1,兩點連線過詢問點為2,所有兩點之間夾角<180°為3否則為0
具體實現可以維護分數,或者用實數然后大力調參+面向數據
6962. 【2020.01.24冬令營模擬】展覽會
Boruvka算法,每次掃描線+線段樹找擴展邊
boruvka:維護當前的塊,每個塊拉一條連向塊外的最小邊,對這一層合並后繼續,每次塊/2
loj#2511. 「BJOI2018」雙人猜數游戲
如果模擬AB剩余可能的數對,這樣感覺不能搞,因為一個人不知道另一個人的數對
考慮直接dp,設f[i,j,k]表示經過i輪(j,k)是否能被當前的人判斷,先考慮另一個人未判斷出的情況
有f[i-2,j,k]->f[i,j,k],然后如果對於所有可能的數對(u,v)((u,v)!=(j,k)),如果f[i-1,u,v]均合法則f[i,j,k]合法,因為可以排除判斷
最后要滿足f[t,m,n]=1,f[t-1,m,n]=0,同時下一個人要能判斷則f[t,u,v]均不合法,這樣可以唯一確定mn
如果A知道了而B下一輪不知道,則因為A無法給更多信息所以B永遠不知道,所以AB一定是先后在兩輪以內知道
6960. 【2020.01.23冬令營模擬】簡單序列問題
一種推法是把ai和an-i+2做差為b,變成b1<=b2<=...<=bm+1,設bm+1=n-a1,貢獻是Π(bi-bi-1),同時有Σbi(i<=m)<a1
發現把bm+1一起加進去就變為Σbi<n,接着把b差分后和題解類似
題解做法:先把a差分然后寫出約束,類似\(b_1>=\sum_{i=2}^{m}{(i-2)b_i}+\sum_{i=m+1}^{n}(n-i+1)b_i\)(b0=1,所以加上等號),先b2~bn填完后用b1使其合法,所以是b1方案*b2~bn方案
同時有\(\sum_{i}b_i<=n-1\),\(b_1<=n-1-\sum_{i>1}b_i\),設上面的系數為ci,設S=Σ(ci+1)bi,T=Σbi(i>1),則有0<=S-T<=b1<=n-1-T<=n,所以只用考慮最近的限制,即b1有n-S種取值,最后答案為Σ(n-S)f[S]
寫成多項式就是分母為\(\prod_{i<=m}(1-x^i)\),變成無限項后上面是平方,由於2m>n所以%x^n=0,只有最多一項乘上去,下面是划分數的平方,用五邊形數+求逆做到O(n√n)
loj#2513. 「BJOI2018」治療之雨
設f[i]表示還剩i的期望,維護f[j]=aj*f[i]+bj(j<i),求出f[i]與f[i+1]后更新ab,時間O(n^2)
CF1284G. Seollal
先假設邊全存在接着把一些邊斷掉,在四個點中間的方格放一個點連邊表示斷掉原邊,發現求這個的一棵生成樹等價於原問題(有環即把若干格子分割開),這樣求了反圖后約束等於一些點周圍的四條邊選最多2條,即圖擬陣交均勻擬陣並
(似乎並不是簡單的擬陣並,但應該是擬陣)
6954. 【2020.01.19冬令營模擬】遺忘的記憶
圖擬陣交若干均勻擬陣的並
6957. 【2020.01.19冬令營模擬】板凳
預處理出n+1段產生的區間,排序+二分or離線找到詢問所在初始段,然后線段樹二分往下找,要算往某個子樹走的個數,直接算是log^2,預處理+遞推可以一個log
CF1386A. Colors
67%:把[1,n]分成[1,n/2],[n/2+1,n],在兩邊各維護一個位置然后同時二分,最后剩一點時暴力處理,這樣一邊是log總次數為2log
100%:上面的每兩次中只有一次有效,考慮直接二分答案,維護位置x每次左右跳,發現初始在大約1/3n的位置可以滿足左右不會跳出去(先往右跳1/2n簡單算可得,往內跳不會出鍋),但實際上會所以出鍋了就暴力找未找過的位置對(i,i+mid)然后用2詢問每次來縮,卡不掉
6952. 【2020.01.16冬令營模擬】吞天得手
類似agc的某題,維護相同序列的結束位置集合以及出現次數,用線段樹二分+set依次找集合第一個元素后的值,然后每個值掃一遍累加當前次數得到新的次數,遞歸往下做
這樣顯然按照字典序遍歷
keyence2021D
考慮答案下界,設N=2^(n-1),則N(2N-1)|N(N-1)*k,k的最小值為2N-1,即2^n-1
構造答案:對於i=1~2^n-1,當popcount(j&i)為奇數時分到A,否則分到B
證明:只用考慮兩個人xy分到同一組的次數為2^(n-1),對於i的某一位如果為0不會改變結果,為1且xy在該位上不同時會改變,則計算次數等於二項式展開后奇數項,即2^(n-1)
6950. 【2020.01.16冬令營模擬】枇杷樹
直接暴力記憶化,求一個點到樹內點距離和以及兩點之間距離,前者狀態m^2后者m^3(樹以及兩個頂點,頂點只可能是2m中的),map隨便過
CF1386C. Joker
顯然等於判斷[1,L-1]∪[R+1,m]是否為二分圖,枚舉L求出每個L對應的最小R
發現貪心不行,所以直接模擬維護從后往前加的lct,每次把環中最小的R刪掉,如果是奇環就更新ans
注意在加的過程中可能有未加但合法的邊,左邊不用管右邊也不用管,因為刪掉一條邊后有關的只有連接兩個連通塊(兩塊的顏色可能反轉)的,即跨過刪掉邊的,而這些邊顯然在刪掉邊之后加入,所以會一同刪掉,同理不用再連鎖刪無用的樹邊
loj2493. 「BJOI2018」染色
首先二分圖顯然全部{0,1}卡掉,然后發現K3,3和K2,4也可以,於是大膽把>=3條非樹邊的判掉然后就過了
如果存在兩個不相交的環,則可以各選一條邊然后根據起點選0/1用這條邊卡(一邊{0,2}一邊{1,2}),一般情況就是找兩條邊使得四個端點都能通過非這四個點連通,這樣可以卡
先只考慮相交的情況,當>=3條非樹邊時圖類似K2,4,若兩個點都是4度則用四種顏色卡,否則在某個4點上拉一個環,環上選一條環外選一條即可卡掉
所以判掉了>=3的,當<=2時直接找出兩個環以及相交部分判
agc050F - NAND Tree
偶數先枚舉第一次操作的邊
① 把邊分組,顯然組內的操作如果不操作同一個點,則可以交換抵消掉后面的,於是可以把兩次操作合成一次
(如果不分組會假,后面的操作一次操作一個組所以不用考慮組之間的關系)
② 在①的基礎上魔改轉化題意:每次選擇一個三個依次相連的點x-y-z,用x吃掉y和z,問題在於當x=z時操作后不為x,但這樣x->y->z和z->y->x抵消了所以沒事,當x≠z時討論得證
③ 在②的基礎上枚舉最后剩哪個點,發現如果一次操作與根無關則兩種方向抵消,因此每次只能選根往下吃
然后隨便寫個dp把樹划分成若干長2的鏈,時間O(n^3)
(划分是唯一的,可以組合數O(n^2)
UPD:偶數的話其實第一次的邊和根可以不同,但根據597第一定理確定了根之后剩下的為偶數(雙射?),所以可以硬點相同
6935. 【2020.01.01冬令營模擬】祭(口胡)
5k1分陰間做法:分治,考慮跨過分治中心的矩形,左邊變成求區間內子區間min和,右邊離線每加一次多兩個詢問區間,區間min和用單調棧+區間歷史和維護
正常log^2做法:掃描線+線段樹+單調棧+樹狀數組,每次單調棧彈掉的乘上右面投影過去的面積(就是Σminl*minr)
還可以一個log用吉司機樹做
CF1470E. Strange Permutation
顯然可以把(i,j)連向(i+1+k,j-k),然后就是求字典序第j小的第i位
對(i,j)->(i+1,j)維護重鏈,走重鏈直接二分到下一個不走的位置(到一個點的限制是[先前的,先前的+當前的],是一個單調內縮的區間),只會走c條輕邊
CF1466H. Finding satisfactory solutions
發現限制就是把最終邊以及之前的邊加進去后,除了完全由最優邊組成的環以外沒有新的環
dag計數,每次加上若干度數為0的點,容斥系數為(-1)^(|S|+1),則顯然可以發現會算恰好一次
把相同大小的環縮起來(1440)每次加若干相同的環,O(1440*n^3)dp即可
CF1466I. The Riddle of the Sphinx
單獨一次操作很無力,但將兩次操作組合即可做到詢問一段前綴與給出等長串的大小關系(前面相同后面全1)
先考慮一個5(n+b)的做法:
維護一個棧,從低到高位數遞增,第i位恰好匹配潛在max的前i位,考慮新加的串和棧頂的大小關系以及需要的操作次數
①小於:不加,2次(詢問先大於后小於)
②等於:加同時找下一位,3次+1棧
③大於:彈棧頂,1次-1棧+①/②/③
最后會剩下一些,接着從后往前用最長的比較現在的(2次),如果現在大就刪后面,小就不加,最后剩下k個有長度為k的相同前綴,遞歸求解
一個棧的勢能是2,所以全②下非遞歸為5n,遞歸一次是(n,b)->(k,b-k)=>5k,勢能總數為b,所以是5(n+b)
優化:先把最后比較的那部分變成只比較大於,則最后剩下的是小於等於末串,在下一輪里會被恰好等於的干掉,這樣是4(n+b)
然后把前面的比較小於也去掉,原理同上就是遞歸進去的串里的前綴小於等於給出的,同時有至少一個等於,而且如果當前串小於給出的那么往后加的全是0,不會產生新的max,這樣就3(n+b)了
6944. 【2020.01.07冬令營模擬】球
直接容斥后求算,最高只有三次和,寫插值會被卡常
6945. 【2020.01.07冬令營模擬】星空
考慮暴力,費用流連S->i,i->i+1,i->T連邊,發現每次增廣等於加上一對點,滿足加上后的括號序合法
左括號在左好做,左括號在右需要保證中間非0,線段樹維護區間內點對中間次數的min最小b和非最小b,再維護前后綴到最小值為止的minb
6943. 【2020.01.05冬令營模擬】社會實踐
先構造一種方法:從后往前維護一個位置x,表示把前面[1,i]移到x,若當前和x相同就不動,否則把前面的移到第三根上,然后移i,最后用2^(i-1)-1移到x,總共要2^(i-1),求和得到上界為2^n-1
現證明其最優,若當前相同仍移動則花費2^(i-1),大於前面的上界2^(i-1)-1,所以能不動就不動
線段樹維護經過后的位置變化以及答案
CF1264E. Beautiful League
先用總數-不合法數,不合法數=Σ(出度-1)*出度/2
對於原圖的邊(u,v)新建一個點x,連st->x,x->u,x->v來表示哪個點被分配了1出度,對於每個i連n條流量為1費用依次遞增的i->ed邊,表示出度每+1的代價
跑最小費用最大流,時間O(n^4log)能過,題解似乎直接模擬做到O(n^4)
CF1470C. Strange Shuffle
打表發現p一直是k,p前面的一段小於k后面一段大於k
證明歸納,滿足以p為中心往兩邊的兩個數之和為2k,無論奇偶往外都是各k的貢獻,p每次也把k貢獻出去,最后剩下的一個/兩個也一樣
所以隨機出一個然后往前/后找k即可
CF1470D. Strange Housing
貪心往外擴,選了x后考慮與把x相連的 相連的加進去,顯然有解
loj#3347. 「APIO2020」有趣的旅途
首先以0為根求子樹大小即可O(n)找到重心,然后O(3n)找到相連的三個子樹的深度集合,把集合從大到小排序
如果只有兩個子樹,n為奇顯然是(n-1)/2,n為偶就是兩個n/2,所以直接跳
如果有三個子樹,則每次找當前最大的不在同一個子樹內的跳,跳到存在某兩個子樹的和與另一個的差絕對值<=1且下一個要跳的是最大的就變成上面兩個子樹的情況,最后把根丟到較小的那邊里
因為每次選最大的可以通過歸納得到剩下兩個中只有最多一個大於它,並且若當前不是最大的則下一個一定是最大的
這樣的話一開始輪流選最大的一定合法,因為若按順序選abc不合法則a+b<b+c,即a<c,所以c和a顯然不在同一個子樹內,可以得到abc分別在三個子樹內,即選a時bc都可選,那么若a<c則一定有a>=b,那會先選c而不是選b
要保證是最大的才能轉化,因為這樣下一步選另兩個子樹都合法,同時保證從下下步開始可以交替選
關於第一部分的3n爆標做法:
做法一(from dyp):先詢問1到每個點的距離d,然后兒子在d=2的中,詢問距離找到兒子,然后詢問兒子size找到重心,其他的點的距離當重心每往下走一步時+1,找到重心及三個相鄰點,詢問剩余點到相鄰點的距離,分類討論即可確定在哪棵子樹以及到重心的距離
兩部分的點集無交,同時每部分每個點最多2次,加上初始的共3n
做法二:初始的4n做法把找重心到每個點的距離去掉,問題是怎么找兩個兒子,發現size大於其的第一個一定是父親,詢問這個點到其余點的距離,距離為2的點最多6個,把這6個點判一下即可,次數3n+6
6936. 【2020.01.01冬令營模擬】瞬
直接連通性dp會掛,因為對於子樹t來說可以先放t后走一些子樹,然后撤掉t后再往下走
設f[i,j,k]表示走完子樹i上一個選j還能放k個的答案,轉移對於每棵子樹考慮t放不放,不放就從j走下來
因為樹剖后只用log個就可以不用額外代價,所以k是log級別的,時間O(n^2logn)
uoj#575. 【ULR #1】光伏元件
如果沒有k的限制那就直接拆行列連邊,假設有限制[L,R,K],則連S->i1[L,L+K],i2->i1[0,R-L-K],i2->T[L,L+K],由於流量平衡所以i1和i2的流量限制在[L,R],並且二者的差在K以內,因為走i2->i1的話差不變
跑dij費用流O(n^4),具體就是維護數組h,h初始為dis,然后邊w'(u,v)=w(u,v)+hu-hv,因為是最短路所以非0
然后找到一個流后把所有的hi加上當前的disi,這樣仍滿足條件
證明的話有disu+w'(u,v)>=disv,所以如果u->v不流的話加上也滿足
否則有du+w'(u,v)=dv,du-dv+w(u,v)+hu-hv=0,(dv+hv)-(du+hu)+w(v,u)=0,有h'v-h'u+w(v,u)=0,即w''(v,u)>=0