原创 期望與概率dp

概率 概率加法 互不相交的事件,P(A或B發生)=P(A)+P(B) 如果A和B所涵蓋的結果有交集,那麼P(A或B發生)=P(A)+P(B)-P(A與B同時發生) 概率乘法 在兩個 互不干擾的事中,事件A在其中一件事中,事件B在

原创 STL-queue/map

priority_queue 嘗試定義一個大根堆 priority_queue <int> q; priority_queue <int,vector<int>,less<int> > q; 嘗試定義一個小根堆 pri

原创 10.1模擬賽

T1 【問題描述】 一棵n個點的樹,你需要給每條邊定向。問有多少種方案,使得恰好 有m個點沒有入度。 答案對109 + 7取模。 【輸入格式】 從文件 a.in 中讀入數據。 第一行兩個整數n, m。 接下來n − 1行,每行兩個

原创 10.10模擬賽

T1 思路 首先我們可以打出一個O(N2)的暴力。 然後我們發現如果現在從第i個位置開始往右,可以到r。那麼i+1的右端點肯定更往右,至少不會更劣。也就是說隨着左端點的遞增,右端點單調。 由此我們可以用雙指針做到O(N).

原创 卡時

void dfs() { if((clock()-t)*1000>=900*CLOCKS_PER_SEC) { cout<<"0"<<endl; exit(0); } for(int i=1;i<=100000;i

原创 P3178 [HAOI2015]樹上操作-樹鏈剖分

有一棵點數爲 N 的樹,以點 1 爲根,且樹點有權。然後有 M 個操作,分爲三種: 操作 1 :把某個節點 x 的點權增加 a 。 操作 2 :把某個節點 x 爲根的子樹中所有點的點權都增加 a 。 操作 3 :詢問某個節點 x

原创 noip2012 疫情控制

題意 一棵帶權有根樹,有m個軍隊。對於每個軍隊,移動到其距離不超過K且不爲根節點的一個點,使得最終根節點與原來的所有葉子的路徑上都至少有一個軍隊。求最小的K。 對於 100%的數據,2≤m≤n≤50,000,0<w <109.

原创 tarjan(有向圖&點雙&邊雙)

強連通分量(有向圖) 求法:tarjan 例題 https://www.luogu.org/problemnew/show/P2863 https://www.luogu.org/problemnew/show/P2341 De

原创 聰聰可可-點分治P2634

https://www.luogu.org/problemnew/show/P2634 思路 點分治 考慮solve,發現我們可以記錄一個cnt[0],cnt[1],cnt[2],分別代表經過根的dis值%3餘0、1、2。那麼對

原创 數位dp模板+總結

HDU2089 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<cmath> #

原创 逆元

逆元與逆元存在的條件 設 inv[b] 是 b 的逆元, 那麼 (a/b) %p = (a*inv[b]) %p 一個數 x 在模 p 的條件下不一定有逆元, x 關於 p 的逆元存在 當且僅當 x 和 p 互質 這裏有一個推導:

原创 最大獨立集

獨立集:給一無向圖,找出一個點集,使得任意兩點之間都沒有連邊,這個點集就是獨立集。而點最多的獨立集,就是最大獨立集。 對應地,任意兩點之間都有邊,我們稱之爲團。同時也有最大團。 定理:無向圖的最大團等於其補圖的最大獨立集。 若我們

原创 STL-map

首先map就是一種映射。 map<typename1,typename2> mp;typename1叫做鍵,typename2叫做值 map的訪問 map<char,int> mp; mp['c']=1; for(map<

原创 最短路習題

P2176 [USACO14FEB]路障Roadblock 題意:一個圖, n 個點 m 條邊,求將任意一條邊距離翻倍後 使 1−n 最短路徑增加的最大增量. solution 如果有兩條最短路,那麼增量爲零,所以有意義的答案只

原创 P2573 [SCOI2012]滑雪-最小生成樹

題目描述 a180285非常喜歡滑雪。他來到一座雪山,這裏分佈着M條供滑行的軌道和N個軌道之間的交點(同時也是景點),而且每個景點都有一編號i(1≤i≤N)i(1 \le i \le N)i(1≤i≤N)和一高度H_i。a1802