原创 【半平面交】洛谷P4196 模板

題目在這裏 題目求解的是很多多邊形的交的面積。 其實很多多邊形就是很多線段,由於是逆時針給出的點,所以也就是很多線段的左半平面。 故直接半平面交即可。 求出凸殼後用三角剖分求出面積即可。 本代碼是複製洛谷題解裏面的,當作模板使用。

原创 【求平面上最遠點對】旋轉卡殼模板 POJ2187

題目戳這裏 Attention 本文不涉及旋轉卡殼的原理和思路,想看原理和思路的請尋找其他的博客。 求平面上最遠點對,顯然,最遠的點對一定在凸包上。 所以我們先求一個凸包。 然後旋轉卡殼就可以求出來最遠點對了。 旋轉卡殼說白了就是

原创 【康託展開 & 逆康託展開】求一個排列在全排列中的排名 洛谷P5367 & 給定一個排名求排列

題目在這裏 求一個排列在全排列中的排名。 好像是一個比較經典的問題,類似的問題還有,求子串的排名等等 我在胡說什麼 康託展開說白了就是一個hash方法。 方法如下: ans = 1+sigma(a[i]*(n-i)) 例如:對於一

原创 【BZOJ1007】下凸殼

BZOJ1007 顯然,畫圖可知,最後看見的線段一定組成了一個下凸殼。 而且從左向右的線段的斜率一定是遞增的。 所以我們對斜率排序,(由大到小和由小到大都無所謂),然後通過初中數學知識計算一下交點,用單調棧維護可以看見的部分即可。

原创 【BZOJ2330】差分約束

BZOJ2330 題目問的就很差分約束。 太裸辣! 唯一需要注意的就是分的糖果要>=1。 #include <bits/stdc++.h> #define INF 0x3f3f3f3f using namespace std; c

原创 【hihoCoder 1457】SAM+拓撲排序

題目在這裏 題意就不贅述了。 分析: 設cnt[i]表示狀態i共有多少串。 那麼sum[i]表示狀態i的貢獻。 那麼答案就是sigma(sum[i]) cnt[i]怎麼求呢,建立完SAM後對於每一個狀態建立拓撲圖。 且若在拓撲圖上

原创 【LCT裸題】

題目均來自ZZQ博客:LCT裸題泛做 BZOJ2049 非常裸的LCT,連邊斷邊詢問連通性,並查集也可做。 (有點卡常) #include <bits/stdc++.h> #define sc(n) scanf("%d",&n)

原创 【BZOJ1877】最小費用流

BZOJ1877 乍一看以爲是一個dp,其實分析之後可以發現,每個點每個邊只能走一次,所以將點拆開,將流量設爲1,跑MCMF這題就沒了… #include <bits/stdc++.h> #define INF 0x3f3f3f3

原创 【牛頓迭代法求函數的一個零點】模板

見代碼:註釋也很明瞭 /* 牛頓迭代法求方程的一個零點 設f2(x)爲f(x)的導數 任取x,方程的零點即爲x=x-f(x)/f2(x) 循環幾百次就可以得出一個零點。 */ #include <bits/stdc++.h> u

原创 【快速讀入】

快速讀入模板 inline int read() { char ch = getchar(); int x = 0, f = 1; while(ch < '0' || ch > '9') {

原创 【任意模數NTT模板】

沒錯,這又是一個板子… 使用方法如下: 任意模數NTT模板題 輸入A,B和模數 然後放進solve裏面,就可以輸出結果啦!!! #include <bits/stdc++.h> using namespace std; typed

原创 【拉格朗日插值模板】

沒錯,這幾天不學無術,只會抄板子… 這又是一篇板子記錄貼… 拉格朗日插值,食用方法如下: 拉格朗日插值模板題 由小學知識可知,n個點(xi,yi)可以唯一地確定一個多項式。 現在,給定n個點,請你確定這個多項式,並將k代入求值。

原创 【FWT模板】快速沃爾什變換模板

沒錯,還是一個板子博客… 快速沃爾什變換。 使用方式如下: 快速沃爾什變換模板 給定長度爲2n 的兩個序列A,B C[i]=∑j⊕kA[j]B[k]C[i] = \sum_{j\oplus k} A[j]B[k]C[i]=∑j⊕k

原创 【NTT模板】

沒錯,這就是我在網上找的一份NTT的板子… 使用方法如下: 多項式乘法模板 求多項式乘法, A數組存第一個多項式的係數 B數組存第二個多項式的係數 也就是讀入啦! 然後直接穿solve(A,B),最後答案就會在A裏面啦! 直接輸出

原创 【UVA12545】思維

鏈接在這裏,(反正你們也進不去) 分析 這題看起來好像不太簡單,剛一上來甚至想dp 然後又想模擬 其實,有些時候,我們不需要關注事物的細節,我們從宏觀的角度就可以發現事物的真諦。 比如這道題目,我們不從細節去考慮,我們從統計的角度