About
Blog主現高一,文化課和OI啥都不會
本Blog主太懶,所以很多內容都縮在一個文章里,如數學、圖論大禮包
https://wenku.baidu.com/view/56d76029647d27284b735158.html
Ideas
- 看一個結論: \(n=0,n=1\)的時候顯然成立
\(n\geq2\)時,假設\(n-1,n-2\)都成立,則:\(\sum_{i=k}^n\tbinom{i}{k}=\tbinom{n}{k}+\sum_{i=k}^{n-1}\tbinom{i}{k}=\tbinom{n}{k}+\tbinom{n}{k+1}=\tbinom{n+1}{k+1}\)
update:底下評論里的AH隊長why執政 指正要把n=k提出來
-
\(O(\sum_{d|n} d^{0.5})=O(n ^{0.5 + \epsilon})<O(n^{0.75})\)
-
\(x | \frac{n}{y} \Longleftrightarrow y | \frac{n}{x}\),證明顯然,然而沒想到用
-
\(\gcd(a^m - b^m, a^n - b^n)=a^{\gcd(m, n)} - b^{\gcd(m, n)},\gcd(a,b)=1\)
-
一個重復2次的子串長度2L,一定包含s[1], s[1 + L], s[1 + 2*L],...,中的某相鄰兩項
-
兒子的值對父親有貢獻,考慮樹剖
-
線段樹歸並建樹可以處理出對於每個x,左右兒子最大的<=x的樹的多少,這樣可以詢問時可以O(1)轉移,是二維數點常用技巧
-
對於LIS可以考慮差分前綴maxf數組,或是記錄二分LIS的單調棧(狀壓技巧)
-
對於排列問題一種考慮方式是從1~i推到1~i+1
-
區間dp的種種套路:比如斷成2個區間考慮,比如考慮去掉最后一個點(或塊)
-
一種線段樹求全局答案的方法:結點只保存完全在區間內的操作,其他操作在祖先處考慮(如掃描線區間覆蓋)
-
s個[0,mod]的隨機變量max的期望是mod/(s+1)*s
-
\(a-b \leq a \text{ xor } b\)
-
若\(a>b,\gcd(a, b)\leq a - b\)
-
二維曼哈頓距離最小生成樹:考慮一個45度區域里只有一個最近需要連邊。樹狀數組優化即可。
-
在01trie上解決一類問題:每次把當前集合划分成第k位是0和1的兩個集合,遞歸到k-1位去做再考慮合並(叫二進制分組?)
-
一個二維問題無法下手,考慮行列分開,可能行列是獨立的。
-
設\(m\)為最大數,\(c\)為不同數字個數;一種\(O(n + mc)\)求嚴格LIS:\(f(i, j)\)表示前\(i\)個數以數字\(j\)結尾的LIS,然后這個可以把第一維滾掉。每次\(f(a[i])\)去刷\(f(a[i]+1)\)到\(f(m)\)的值,遇到\(\geq f(a[i])\)就停。冷靜分析一下復雜度很對:\(f\)一共就\(c\)種取值,每種取值最壞把\(m\)個位置都覆蓋一遍。
-
求若干個有序數組,每個數組選一個數然后加起來,求\(Kth\):兩兩合並。合並\(A,B\),先將\((a[1], b[i])\)入大根堆,每次取出(a[i], b[j])的時候再把\((a[i + 1], b[j])\)丟進去。
-
計數dp時,考慮整體的加減和加入最小數;規定一個順序(從小到大)最后乘一下階乘。
-
點分治:單調隊列按秩合並以優化復雜度
-
模意義下無法開根號?擴域試試!
-
據說\(Z=(a+bi)^n\),\(Z\)的共軛復數的\(n\)次方=\(Z\)的\(n\)次方的共軛復數
證明:用\(Z'=a-bi\)表示\(Z=a+bi\)的共軛復數
先證一個結論:\(A’B‘=(AB)'\)。使用定義即可。
然后歸納,\(n=1\)顯然成立
假設\(n=k\)成立,即\((Z^k)'=(Z')^k\)
兩邊乘以\(Z'\):\((Z^k)'Z'=(Z')^{k+1}\)
再用一下上面的結論:\((Z^{k+1})'=(Z')^{k+1}\)
Q.E.D
-
\([i \bmod 2 = 0]=\frac{(-1)^i+1^i}{2}\)
-
無向圖連通圖簡單環個數\(2^{m-n}\)。簡單環可以表示成任意基環xor(基環值任意生成樹,非樹邊與樹上路徑形成的環)。基環可以用dfs在\(O(n+m)\)時間里找到。
-
\(\lfloor \frac{a}{c} \rfloor +\lfloor \frac{b}{c} \rfloor \leq \lfloor \frac{a + b}{c} \rfloor\)
-
\(\prod (a_i !) \mid (\sum a_i)!\)
-
max樹上差分用左偏樹即可。或者反向倍增。
-
樹形dp中u選fa必選可以考慮按dfs序dp
-
拓撲標記:n到1分配,找出度為0最大點
-
聽說隨機點集凸包上點個數的期望是\(O(\sqrt n)\)的
-
排列問題有時候可以用預支付思想。
-
一個語法小trick:
struct cmp {
bool operator () (const Node &a, const Node &b) const {
return a.d < b.d;
}
};
priority_queue<Node, vector<Node>, cmp> pq;
//用cmp排序,每次取最后一個
-
\(d(n)=O(n^{\frac{1.066}{\ln \ln n}})\),int和ll以內約數個數最大分別為\(10^3\)和\(10^5\)級別
-
二維的某些問題考慮標號以2n為基(因為坐標差在-(n-1) 到 (n-1)之間),方便使用卷積。
-
帶刪除堆:兩個priority_queue即可實現
-
若給定多邊形不知順逆順序,通過符號是否相反來判斷凹凸,及點在多邊形內外。另外求點到線段距離西先求夾角大小。
-
令\(n = \prod_{i = 1}^k p_i ^ {c_i}\),\(f(n) = \max(c_i), g=f*\mu\)
若存在\(c_i \not = c_j\),則\(g(n) = 0\)。
否則\(𝑔(𝑛)=(−1)^{𝑘+1}\)
Queries
Q1
一個常見的方程\(ax+by=c\),現在擴歐求出特解\(x_0,y_0\),然后\(x=x_0-\frac{b}{(a, b)}t, y=y_0+\frac{a}{(a, b)}t\)
現在想找到一組解,在滿足\(|x|+|y|\)是奇數的情況下,\(|x| + |y|\)盡可能小
題解做法是枚舉所有滿足\(| t | \leq 1 + \frac{c}{(a, b)}\)的\(t\)。不知道為啥只要在這個范圍里枚舉。