原创 [一些性質]

斯特林數公式 第一類 nm↓=∑k=0..m(−1)n−k[mk]nknm↓=∑k=0..m(−1)n−k[km]nk 也就是說,[mk][km] 是(x)∗(x−1)∗...(x−m+1)(x)∗(x−1)∗...(x−m+1

原创 [JZOJ4610]線段樹

題目大意 解題思路 先考慮詢問怎麼做。 一個很關鍵的想法是,我們可以把操作了[l,r]的akak 表示成一段區間的最大值,如果知道了這個區間,問題就很簡單了。假設爲max{a[le..ri]} 假設有一個假如我們有一個(

原创 [JZOJ4236] 登山

題目描述 惡夢是一個登山愛好者,今天他來到了黃山。 俗話說的好,不走回頭路。所以在黃山,你只能往前走,或者往上走。並且很顯然的是,當你走到山脊的時候,你不能夠往上走,你只能往前走一步再往上走。 抽象一點而言就是,你可以把黃山視

原创 [JZOJ5594][min25篩]最大真因數

題目描述 一個合數的真因數是指這個數不包括其本身的所有因數,例如6 的正因數有 1; 2; 3; 6,其中真因數有1; 2; 3。一個合數的最大真因數則是這個數的所有真因數中最大 的一個,例如6 的最大真因數爲3。 給定正整

原创 [JZOJ5591]. 修修的鐵拳

題目描述 給出初始點(x0,y0),你可以走T步,每次上下左右,最終你會走到一個點(x,y),這個點的貢獻是xnymxnym ,問所有方案的貢獻和。 解題思路 考慮40分怎麼做,可以枚舉一個(x,y),算出到這裏的方案數,然後

原创 [JZOJ5555]Password

題目描述 a[1][i]<=1e4,n,m<=1e5 解題思路 一眼似乎不可做。隨便搞個數據打個表找找規律,發現除了第一行,第i行和第i+2行是一樣的。 考慮一種權值爲一種顏色。 那麼問題變成了詢問一個點的前面有多少個和他

原创 [CF938G] Shortest Path Queries

題目描述 給你一幅n個點,m條邊的無向圖,每條邊有權值d,現在有q次操作,有三種操作。 1,給出x,y,d,加入連接x,y的權值爲d的邊 2,給出x,y,刪除這條邊 3,給出x,y,問從x到y的路徑的最小異或和。 保證操作

原创 [JZOJ5595]歐拉函數

題目描述 對於正整數n,定義歐拉函數φ(n) 爲小於等於n 且與n 互質的正整數個數。例如 φ(1) = 1,φ(8) = 4。 給定正整數序列a1; a2;…; an,請依次執行q 個操作,操作有以下三種類型: • 0 i

原创 [CF700E][JZOJ5558][線段樹合併]Cool Slogan

###題目大意 給你一個長度爲n的字符串S,求最長的一個字符串序列a[1…k]滿足序列中的每一個字符串都是S的子串,且對於任意的1&lt;i&lt;=k1&lt;i&lt;=k1<i<=k都有a[i−1]在a[i]中至少出現兩次。

原创 [JZOJ5569]【NOI2018模擬3.8】鏼爾德

題目描述 鏼爾德是六兄弟中的老三,他喜歡老四弗斯,他希望弗斯高興。 鏼爾德給弗斯發了一封信,爲了防止別人知道,他將其加密了,請你幫助弗斯解密。 鏼爾德選擇了n個正整數a1,a2…an,保證ai>a1+a2+…ai-1。令q=2

原创 [UOJ NOI Round #2 Day1]黎明前的巧克力

題目大意 給出n(n<=10^6)個在[0,10^6]內的整數a[1..n],現要求從中選出兩個不相交的集合,使得這兩個集合的各自的異或和相等,可以存在有的數沒有被選擇,集合可以爲空,但是兩個集合不可以同時爲空。 問選出兩個這樣

原创 [min25篩學習小記]LOJ6053

min25篩 解決一類積性函數求前綴和問題,主旨爲模擬普通篩法過程。 假設我們要求∑i=1..nF(i)∑i=1..nF(i) 。 一般來說,能做的題,F(p)可表示爲p相關的多項式,其中p爲質數,下面將以F(p)=pkF(p

原创 [矩陣樹定理][prufer序][CF917D]Stranger Trees

題目描述 給定一棵n個點組成的有標號的樹T,我們定義兩棵有標號的樹的相似度爲它們共有的邊的個數。 現在我們想知道,n個點的完全圖所有的有標號的生成樹中,有多少棵樹與T的相似度爲 0,1,2 … n - 1,答案對10^9+7取模

原创 [JZOJ5608]Subset

題目大意 對於 10% 的數據滿足 n ≤ 20 對於 30% 的數據滿足 n ≤ 2000 另有 20% 的數據滿足 a i = b i 對於 100% 的數據滿足 n ≤ 100000 解題思路 對於一個合法的三元組,

原创 整數拆分問題

第一種 給定n,求把n拆分成若干個不相等的數的方案數。 設f[i][j]f[i][j] 表示把j拆成i個數。 考慮要不要新添加一個數,並把之前的數全部加一。 f[i][j]=f[i−1][j−i]+f[i][j−i]f[i]