原创 [期望DP] SRM 579 Div1 Hard RockPaperScissors

SolutionSolution E(x)=∑x∈AScore(x)×P(x)E(x)=∑x∈AScore(x)×P(x) 只要考慮投了mm 輪得到(r,p,s)(r,p,s) 的概率和分數就好了。 概率可以這樣DP。 ft

原创 [樹的dfs] Codeforces 717 E. Paint it really, really dark gray

SolutionSolution 又是這個idea。。。 大致就是自下向上調整每個點,把調整的媒介丟給父親。 最後特判一下根就好了。 #include <bits/stdc++.h> #define show(x) cerr

原创 [不平等博弈][DP] TCO 2017 Final Div1 Medium GameOfTokens

SolutionSolution 先考慮已知模板串的情況。 如果出現ABB這樣A的個數比B的個數少的,那麼A是不可能會向左走的。 整個模板串就會因爲這個分隔開成若干個獨立遊戲。 我們要計算每個遊戲的值的和。 維護兩個變量a

原创 [斯特林數] Codeforces 932E. Team Work

SolutionSolution 可能也算是裸題了咯。 求∑i=1n(ni)ik∑i=1n(ni)ik 用斯特林數把ikik 展開。∑d=0kd!S(k,d)(nd)2n−d∑d=0kd!S(k,d)(nd)2n−dO(k2)O

原创 [DP] SRM 452 Div1 Hard IncreasingNumber

SolutionSolution 剛開始自己腦補了一個O((123)m2logn)O((123)m2log⁡n) 的做法。。大概就是dpi,lo,hi,jdpi,lo,hi,j 表示考慮ii 位,以lolo 開頭以hihi 結尾,

原创 [NTT][DP][樹鏈剖分][分治] LOJ #6289. 花朵

SolutionSolution fu,0/1,ifu,0/1,i 表示uu 子樹中選了ii 個點,uu 選不選的答案。 轉移顯然就是一個卷積的形式。 考慮重鏈剖分。 先把輕兒子捲到根,這樣只需要考慮重鏈。 再考慮重鏈上的

原创 [後綴數組][trie合併][啓發式合併][並查集] LOJ #6198. 謝特

SolutionSolution 求出後綴數組heightiheighti 後。 問題轉化爲maxi≠j{mini<k≤j{heighti}+(wi xor wj)}maxi≠j{mini<k≤j{heighti}+(wi xo

原创 [線段樹分治][DP] LOJ #534. 「LibreOJ Round #6」花團

SolutionSolution 操作相當於是動態的做一個揹包DP。 離線的話,線段樹分治一下。 因爲結尾是已知的,可以一邊分治,得到一個修改操作,就插到線段樹。 只要保證分治從左到右,每個操作都在線段樹上得到了實現。 1

原创 [DFT][Matrix-Tree定理][高斯消元] LOJ #6271. 生成樹求和 加強版

SolutionSolution 可以把每位分開來做。 這樣每一位都是一個長度爲3的循環卷積。 DFTDFT 後就是獨立相乘了,可以矩陣樹定理。 考慮三次單位根ω3,1+ω3+ω23=0ω3,1+ω3+ω32=0 。 如何

原创 [DP][CDQ分治] BZOJ 4553: [Tjoi2016&Heoi2016]序列

SolutionSolution 設位置ii 最大可變成riri ,最小lili 。 fifi 爲ii 位置的答案。容易得到fi=max{fj+1|j<i,rj≤ai,aj≤li}fi=max{fj+1|j<i,rj≤ai,aj

原创 [博弈論][二分圖匹配][網絡流] LOJ #536. 「LibreOJ Round #6」花札

SolutionSolution 這是一個Undirected Vertex Geography。 可以 O(n3)O(n3) 對每個點得到答案。 UVG遊戲中 (G,v)(G,v) 即圖 GG 中先手在 vv 必勝的

原创 [線段樹] LOJ #535. 「LibreOJ Round #6」花火

SolutionSolution 現將所有數轉化爲二維平面上的點(i,hi)(i,hi) 。 幾個性質: 交換兩個數(i,j),(i≤j,hi>hj)(i,j),(i≤j,hi>hj) ,減少了的逆序對數是矩形((i,hi),

原创 [數論][Lucas定理] 51Nod 1778 小Q的集合

SolutionSolution 通過枚舉⌊im⌋⌊im⌋ 和imodmimodm 。由Lucas定理是可以獨立計算貢獻的。 ans====∑i=0n(ni)(ik−(n−i)k)2∑i=0n(⌊nm⌋⌊im⌋)(nmodmim

原创 [DP] 51Nod 1301 集合異或和

SolutionSolution 感覺是挺有趣的一道題qwq 枚舉AA 和BB 從高到底第一個不同的位kk 。 A<BA<B 可以轉化成A xor B∈[2k,2k+1]A xor B∈[2k,2k+1] ,且B or 2k=

原创 [生成函數] HackerRank Count Fox Sequences

SolutionSolution 這是個有序的序列,只要計算一個數出現了最多次,最後乘mm 就好了。 枚舉出現了kk 次。 那剩下的就是∏i=1m−1(∑j=0k−1xj)=(1−xk)m−1(1−x)1−m∏i=1m−1(∑