原创 非旋treap模板

非旋treap模板 struct Treap{ int ls[MAXN],rs[MAXN],siz[MAXN],rd[MAXN]; int val[MAXN]; bool flag[MAXN]; i

原创 費解的開關 高斯消元

費解的開關 你玩過“拉燈”遊戲嗎?25盞燈排成一個5x5的方形。每一個燈都有一個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某一個燈的狀態。遊戲者改變一個燈的狀態會產生連鎖反應:和這個燈上下左右相鄰的燈也要相應地改變其狀態

原创 cf 601 E2. Send Boxes to Alice (Hard Version)

Send Boxes to Alice (Hard Version) 給定a1,a2,…,ana_1,a_2,\dots,a_na1​,a2​,…,an​,求使ax1=ax2=⋯=axt=k,t=sumka_{x_1}=a_{x_

原创 單調隊列dp

P3084 [USACO13OPEN]照片Photo 農夫約翰決定給站在一條線上的N(1 <= N <= 200,000)頭奶牛製作一張全家福照片,N頭奶牛編號1到N。 於是約翰拍攝了M(1 <= M <= 100,000)張照片

原创 cf-ronnd-600-F-Cheap Robot

Cheap Robot You’re given a simple, undirected, connected, weighted graph with n nodes and m edges. Nodes are number

原创 cdq分治(模板)

可求解多維偏序問題 三維偏序(陌上花開) 有 nn 個元素,第 ii 個元素有 aia_iai​、bib_ibi​ 、cic_ici​ 三個屬性,設 f(i)f(i)f(i)表示滿足aj≤aia_j \leq a_iaj​≤ai​

原创 topo序 最短路 線段樹

Delete 題目描述 給定一張n個點,m條邊的帶權有向無環圖,同時給定起點S和終點T,一共有q個詢問,每次詢問刪掉某個點和所有與它相連的邊之後S到T的最短路,詢問之間互相獨立(即刪除操作在詢問結束之後會立即撤銷),如果刪了那個點

原创 平面最近點對 cdq分治

cdq分治可以很好地處理平面點對間具有某種性質的值或數量,最近點對也不例外。 參考OI Wiki 先對x排序,cdq返回點集內部最近點對的距離記爲mindis。 考慮如何合併左右區間,對於處於點集A的點a和B的點b,顯然 ∣a.x

原创 dsu on tree 啓發式樹上合併

解決樹上關於子樹信息的靜態問題,如某節點子樹中符合某條件的個數。 cf-600E 給定一棵樹,每個節點有一個顏色,求節點x的子樹中出現次數最多的顏色,如果有相同次數的,顏色id相加。 考慮暴力,遍歷x的每個節點,統計,若只用一個數

原创 紙牌均分問題

首先,如果有某序列aia_iai​,則∑i=1n∣ai−k∣\sum_{i=1}^n|a_i-k|∑i=1n​∣ai​−k∣取最小值時,k爲aia_iai​的中位數。(因爲如果是pos,則pos向靠近中位數的位置移動能更小),這個

原创 splay樹(修訂版)

伸展樹 多值版 #include<bits/stdc++.h> using namespace std; template<class T> inline bool read(T &x){ x=0;register cha

原创 斐波那契性質和排列組合

斐波那契 f1+f2+⋯+fn=fn+2−1f_1+f_2+\dots+f_n=f_{n+2}−1f1​+f2​+⋯+fn​=fn+2​−1 f12+f22+⋯+fn2=fn⋅fn+1f_1^2+f_2^2+\dots+f_n^

原创 cf Round 600 Antenna Coverage dp

Antenna Coverage 給定若n個區間,每次操作可以使一個區間左右拓寬1,求最小操作次數使得區間[1,m]均被覆蓋. 考慮dp: dp[i]=區間[i,m]均被覆蓋的最小花費 轉移: dp[i]=dp[i+1]dp[i]

原创 概率dp Discovering Gold

Discovering Gold You are in a cave, a long cave! The cave can be represented by a 1 x N grid. Each cell of the cave

原创 樹剖top數組

好像很少有關於top數組性質的博客。 for(int i=top[x];fa[i];i=top[fa[i]]) 可以遍歷所有子樹中含有x節點的重鏈鏈頭節點(或葉子節點),由於重鏈不超過log(n)個,所以這個循環複雜度是O(lo