原创 【Bzoj1012】最大數

動態開點的線段樹。 #include <cstdio> #include <algorithm> using namespace std; const int maxx = 200000 + 50; const int Inf =

原创 樹狀數組求逆序對

…話說這不應該是學語言的時候學的嘛… #include <cstdio> #include <algorithm> #define Rep( i , _begin , _end ) for(int i=(_begin);i<=(

原创 【Bzoj1034】泡泡堂BNB

類似於田忌賽馬的策略,最小的能贏就贏,最大的也是能贏就贏,如果都不滿足就用最小的去換對方最大的,然後注意判等於。 #include <cstdio> #include <algorithm> #define Rep(i,s,t) fo

原创 【Bzoj1218】激光炸彈

題意 給你n個點的座標xi,yi。求一個邊長爲k的正方形能覆蓋多少點。 解析 可以枚舉。但是要加一個二維前綴和。統計的時候可以畫一個圖。首先a[i][j]是一個大矩形。之後在旁邊切掉兩個小矩形,但多切掉了一個重複部分,要把它加上

原创 【Bzoj3196】2B平衡樹

題意 您需要寫一種數據結構(可參考題目標題),來維護一個有序數列,其中需要提供以下操作: 1.查詢k在區間內的排名 2.查詢區間內排名爲k的值 3.修改某一位值上的數值 4.查詢k在區間內的前驅(前驅定義爲小於x,且最大的數)

原创 【Bzoj3732】Network

題意 給你N個點的無向圖 (1 <= N <= 15,000),記爲:1…N。 圖中有M條邊 (1 <= M <= 30,000) ,第j條邊的長度爲: d_j ( 1 < = d_j < = 1,000,000,000). 現在有

原创 【Bzoj2588】Count on a tree

題意 偉大的樹上權值第k小。 解析 在樹上建立主席樹,每個點的前驅不再是它的前一個點,而是它的父親結點。我們可以這樣來想,序列上的主席樹類似於前綴和,用的時候直接序列上差分。而樹上也就可以把每個點保存爲到根的主席樹,查詢的時候也類比樹上

原创 【Bzoj4448】情報傳遞

題意 給一棵樹和m個操作(持續m秒),操作如下 1.給一個點打上標記,被標記的點每秒加1危險度,(被標記時仍爲0,後一秒爲1)。 2.查詢x,y的路徑上有多少危險度大於k的點。 解析 這種每秒增加的標記顯然是不好維護的。 考慮轉化

原创 Hello world!

#include <cstdio> using namespace std; int main(){ printf("hello world\n"); return 0; } 咳咳咳,終於有了自己第一個正式點的博客

原创 【Bzoj3522】Hotel

題意 有一個樹形結構,每條邊的長度相同,任意兩個節點可以相互到達。選3個點。兩兩距離相等。有多少種方案? 解析 滿足條件的點對一定是“有一箇中心點,三個點到中心點的距離相等,且三個點分別在不同子樹中”這種情況。(因爲如果在同一子樹中會被

原创 【Bzoj4336】騎士的旅行

題意 給一棵樹,每個結點上可能有多個權值,可以每次改變某權值的值或者位置,多次詢問一條路徑上的前k大值。 解析 對於每個結點維護一個multiset,因爲k很小,所以每次可以把兩結點暴力合併,這樣就只要把兩個隊列合併就可以了。 #in

原创 【Bzoj4353】play with tree

題意 給你一棵包含N個節點的樹,設每條邊一開始的邊權爲0,現在有兩種操作: 1)給出參數U,V,C,表示把U與V之間的路徑上的邊權變成C(保證C≥0) 2)給出參數U,V,C,表示把U與V之間的路徑上的邊權加上C。但是如果U至V之間路

原创 【Bzoj1901】Dynamic Ranking

題意 給一個序列,每次詢問[l,r]區間內第k小的數字。帶修改。 解析 同2B平衡樹的操作。 操作少可以打得簡單一點。 #include <cstdio> #include <algorithm> #define Rep( i ,

原创 單調棧模板題

題意 N個人正在排隊進入一個音樂會。人們等得很無聊,於是他們開始轉來轉去,想在隊伍裏尋找自己的熟人。隊列中任意兩個人A和B,如果他們是相鄰或他們之間沒有人比A或B高,那麼他們是可以互相看得見的。 寫一個程序計算出有多少對人可以互相看見。

原创 【Bzoj2141】排隊

題意 給一個序列,每次可以交換其中的兩個數,每次交換後輸出逆序對的數量。 解析 每次交換考慮x,y之間的數字(x之前,y之後的數字是沒有影響的) 那麼增加的數字是小於a[y],大於a[x]的那些。 減小的是小於a[x],大於a[y]