CSP賽前一週 模板訓練

數論

  • 線性篩素數、歐拉函數
  • 質因數分解
  • 最大公約數&最小公倍數
  • 擴展歐幾里得算法
  • 線性同餘方程+中國剩餘定理
  • 矩陣乘法
  • 高斯消元
  • 組合計數
  • 容斥原理
  • 概率&數學期望
  • 0/1分數規劃

質因數分解:
N的正約數的和爲:
(1+p1+p12+p13+...+p1c1)...(1+pm+pm2+pm3+...+pmcm)(1+p_1+p_1^2+p_1^3+...+p_1^{c_1})*...*(1+p_m+p_m^2+p_m^3+...+p_m^{c_m})

歐拉定理的推論:
許多計數類問題要求我們把答案對一個質數p取模後輸出。
面對a+b,a-b,a*b,直接在計算前對p取模
a/b,則直接變化做a1ba*\frac{1}{b},對b求逆元
aba^b,則先把底數對p取模,再把指數對φ(p)φ(p)取模(前提:gcd(a,p)=1)
**若gcd(a,p)!=1,則bmod  φn+φnb\mod φ(n)+φ(n)

存在逆元的條件:
gcd(x,p)==1gcd(x,p)==1
特別地,當P爲質數的時候,x不能是P的倍數
例題SumdivPOJ 1845

異或的性質:
如果a^b^c=e
則有 a=e^b^c
這樣用高斯消元解異或方程組的時候就很妙了

組合計數:
常用性質


圖論

  • 最短路(Dijkstra,SPFA,Floyd)
  • 最小生成樹
  • 樹上操作(樹的直徑、LCA)
  • 基環樹
  • 負環+差分約束
  • Tarjan
  • 歐拉路
  • 2-SAT
  • 二分圖匹配
  • 網絡流

最短路

  1. 最短路計數【√】
  2. 次短路【√】
  3. K短路【√】
  4. 傳遞閉包【√】
  5. 最小環【√】

無向圖の最小環:核心代碼

for(re int k=1;k<=n;++k){
		for(re int i=1;i<k;++i)
			for(re int j=i+1;j<k;++j){
				if(ans>dis[i][j]+a[i][k]+a[k][j])
					ans=dis[i][j]+a[i][k]+a[k][j];
			}
		for(re int i=1;i<=n;++i)
			for(re int j=1;j<=n;++j){
				ll tmp=dis[i][k]+dis[k][j];
				if(tmp<dis[i][j]){
					dis[i][j]=tmp;
					pos[i][j]=k;
				}	
			}	
	}

Floyd這個亂搞求最短路!!根本無法求次短路好伐。所以自己yy的那個做法是不可以的,但正確性應該是可以保證的
有向圖の最小環:可以枚舉起點s,然後求單源最短路徑。s一定是最先從堆中取出來的,掃描s的出邊進行擴展,然後將dis[s]=infdis[s]=inf,繼續擴展。當s第二次從堆中取出來的時候,答案就是dis[s]dis[s]
最短路計數:果然不能輕視模板啊!!打掛n次。
第一次發現dij板子打錯,粗心忘了標記vis(一般是不會有太大問題的,但是恰恰是計數,問題就很大了)
第二次發現cnt記錯了,應該對於每個點都記錄一下,而不能所有點的答案累加(oh,such a crazy girl)
第三次發現題目有重邊
第四次發現這居然是個有向圖(我要死了)
次短路

最小生成樹

  1. 最小生成樹計數【√】
  2. 次小生成樹【√】

可能還需要複習博弈論,分塊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章