原创 HNOI2019 退役記

窗外風雨大作。 凌晨兩點又被噩夢驚醒,朦朧中看見書桌的燈還亮着。 走近書桌,有一個人正在敲打着鍵盤,屏幕上是一些似曾相識的東西。 被水浸溼的頭髮隨意地搭在額頭上,鼻樑上架着一副眼鏡,鏡片上全是小水珠,鏡片後的雙眼也沒有神采。臉上還有些

原创 [BZOJ4833] [Lydsy1704月賽]最小公倍佩爾數(Min-Max 容斥)

題意 令 (1+2)n=e(n)+2f(n),g(n)=lcm(f(1),f(2),...,f(n))(1+\sqrt 2)^n=e(n)+\sqrt 2f(n),g(n)=\text{lcm}(f(1),f(2),...,f(n)

原创 [BZOJ3809] Gty的二逼妹子序列(莫隊 + 值域分塊)

題意 給你一個長度爲 nnn 的序列 aaa, qqq 次詢問,每次詢問一段區間 [l,r][l,r][l,r] 內有多少種數值域在 [x,y][x,y][x,y] 內(值相等的數算同一種)(ai≤n≤105,q≤106a_i\le

原创 [LOJ2720] 「NOI2018」你的名字(後綴自動機+線段樹合併)

題意 給你一個字符串S\rm SS,q\rm qq次詢問一個區間[l,r]\rm[l,r][l,r],與一個字符串T\rm TT,求T\rm TT有多少個本質不同的子串沒在S[l,r]\rm S[l,r]S[l,r]中出現過。 首

原创 [LOJ6061] 「2017 山東一輪集訓 Day5」字符串(後綴自動機)

題意 給你nnn個字符串,按順序從每個字符串中選出一個子串(可以爲空)拼接起來,求可以拼接出多少種本質不同的串(∑∣S∣≤106\sum |S|\le10^6∑∣S∣≤106 ) 我們首先對於每個字符串都建出SAM,我們知道SAM

原创 [LOJ2731] 「JOISC 2016 Day 1」棋盤遊戲(DP計數)

題意 給你一個3×n\rm 3 \times n3×n的棋盤,棋盤上有一些棋子,問有多少種不同填棋子的順序可以填滿棋盤,一個位置可以被填棋子當且僅當它的左右已經填了棋子或者它的上下都填了棋子。(n≤2000\rm n \le2000

原创 [FZOJ195] 「2019冬令營提高組」樹(樹哈希+DP計數)

題意 給你一個n\rm nn個點的樹A,一個m\rm mm個點的樹B,求A樹有多少個不同的生成子圖與B同構。(n≤2000,m≤12\rm n \le 2000,m\le12n≤2000,m≤12) 我們首先可以枚舉B樹是哪個點作

原创 [FZOJ194] 「2019冬令營提高組」密文(Trie+貪心)

題意 有一個序列a\rm aa,你可以花費vl xor vl+1 xor...xor vr−1xor vr\rm{v_l \ xor\ v_{l+1}\ xor...xor \ v_{r-1} xor \ v_{r}}vl​ xor

原创 [FZOJ183] 「2019冬令營提高組」排序(堆)

題意 在選擇排序的n(n−1)2\rm{\frac{n(n-1)}{2}}2n(n−1)​判斷中,求出第K\rm KK次判斷後的序列。 我們可以求出第K\rm KK次判斷後執行了k\rm kk輪的排序,那麼剩下的一遍暴力做就好了。

原创 [Tsinsen A1482] 登頂計劃(計算幾何+單調棧)

題意 有一個nnn個點構成的折線,有一個人在這些折現中行走,問從每個點出發到達最高點的最小距離(n≤105\rm{n \le10^5}n≤105)。 發現可能出現轉向的點一定是前i\rm ii個點構成的上凸殼最後一條線與折線的交點

原创 [51nod 1222] 最小公倍數計數(莫比烏斯反演)

題意 給定a,b\rm{a,b}a,b,求有多少對i≤j\rm{i\le j}i≤j滿足lcm(i,j)∈[a,b]\rm{lcm(i,j)\in[a,b]}lcm(i,j)∈[a,b](a≤b≤1011)\rm{a\le b\le

原创 [LOJ6515] 「雅禮集訓 2018 Day10」貪玩藍月(線段樹分治)

題意 維護一個雙端隊列,支持兩端插入物品和刪除物品,詢問隊列中體積取模在[l,r][l,r][l,r]中的物品選擇方案中的最大價值。(m≤5×104,mod≤500)m\le5\times10^4,\text{mod}\le500)

原创 [BZOJ4025] 二分圖(線段樹分治+可撤銷並查集)

題意 給你nnn個點,mmm條邊,每條邊有一個出現時間和一個消失時間,求出每一個時刻當前圖是否爲二分圖(n≤105,m≤2×105n\le10^5,m\le2\times10^5n≤105,m≤2×105)。 感謝Inspecto

原创 [LOJ2187] 「SHOI2014」三叉神經樹(LCT)

題意 給你一顆滿三叉樹,每個點權值定義爲所有子節點權值和,葉子節點有一個屬於[0,1][0, 1][0,1]的權值,每次修改一個葉子節點的權值,在修改後回答根節點的權值(n≤5×105n\le5\times10^5n≤5×105)。

原创 [LOJ2083] 「NOI2016」優秀的拆分(後綴數組)

題意 給你一個字符串,問其所有子串的優秀拆分方案數之和,優秀拆分定義爲S = AA + BB,其中A, B都是字符串。 我們發現只需要算每個位置作爲AA串開頭的方案數與每個串作爲BB串結尾的方案數,然後相鄰位置乘起來就可以了。 我