原创 求排名爲K的子串

從前有這樣一種問題,給我們一個字符串,讓我們求其所有不相同的子串中按字典序排名爲K的子串 在討論這個問題的解法之前,不妨先看如何這樣一個問題:如何求一個字符串的所有不相同的子串的個數? 很容易理解,一個字符串的任意一個子串都是母串的某個後

原创 treap模版

#include<cstdio> #include<cstring> #include<iostream> #include<cstdlib> using namespace std; const int MAX=0x7fffffff;

原创 splay模版

#include<cstdio> #include<iostream> #include<cstdlib> using namespace std; const int MIN=-19999999; const int MAX= 1999

原创 poj2828 Buy Tickets

題意:一些人按順序插隊,給出每個人要插入的位置,求出最終的序列。 只要求出每個人的位置即可。觀察發現,倘若有多個人要求插入到第一個人後面,那麼這些人中的最後一個達成心願,而倒數第二個人則會站到這個人身後。 既然如此,那我們只要按順序從後向

原创 poj2449 Remmarguts' Date A*K短路

題意:在一個有向圖上求第K短路。 如果在一個邊權均爲1的有向圖上BFS,那麼第一個搜索到的解就是最短路,第k個搜索到的解就是第k短路。 當邊權不均爲1時,搜索時每次要擴展的節點是誰就成爲了問題。顯然,我們想優先擴展的應該是能使解最接近最短

原创 Bzoj1798 AHOI2009 維護序列 線段樹模版

題意:維護一個序列,支持區間同加或同乘一個數、詢問區間和。 (x+d)*c=x*c+d*c標記就是這樣處理的,剩下的就是注意到處取模了。 #include<cstdio> #include<cstring> #include<iostr

原创 Poj1228 Grandpa's Estate

給出了一些凸包上的點,問該凸包是否爲穩定凸包。 穩定凸包即指在不刪掉當前凸包上的點的情況下,無法通過加點來得到更大的凸包。這樣的凸包每條邊上除兩端點外都一定還有點。 求出凸包頂點,判斷凸包每條邊上是否還有點即可。 既然那麼多人都寫G

原创 【JLOI2013】T1、T2、T3 Bzoj3190~3192

T1: 賽車 Bzoj3190 畫個s-t圖像,寫個水平可見直線,注意只維護x>=0的部分。 #include<cstdio> #include<cstring> #include<iostream> #include<cstdlib>

原创 芸芸揹包

【HDU 2602】 Bone Collector 01揹包模版 有個揹包,揹包有重量上限,有一些不同的骨頭,骨頭有價值和重量,選一些骨頭放進揹包,求最大價值。 #include<cstdio> #include<cstring> #in

原创 Bzoj1502【NOI2005】月下檸檬樹

自適應Simpson積分求面積並。 平行光啊,它有個好,照下來那影子和原來平行於地面的物體是全等。於是我們就有了橫向排布着的一些圓和一些線段,然後算就好了。 #include<bits/stdc++.h> using namespace

原创 HDU1115 Lifting the Stone

就是給了一個密度均勻的多邊形面,求它的重心座標。 三角形的重心我會求!就是頂點座標的算術平均數。 一堆有質量的點的重心我會求!就是座標加質量爲權的平均數。 所以多邊形重心我會求。 問:凹下去的怎麼辦? 答:凹下去就變成負的了。

原创 BZOJ2243 【SDOI2011】染色 樹鏈剖分

Description 給定一棵有n個節點的無根樹和m個操作,操作有2類: 1、將節點x到節點y路徑上所有點染色成顏色c 2、詢問節點x到節點y路徑上的顏色段數量 Solution 先考慮在序列上求顏色段數量的問題。

原创 Poj1222 EXTENDED LIGHTS OUT

每次操作相當於對一個十字取異或,所以每個格子最多隻點一次,而且操作的順序無關緊要。 既然是取異或,那麼很容易想到聯立異或方程組求解。 #include<cstdio> #include<cstring> #include<cstdlib

原创 BZOJ3170~3172 TJOI2013 DAY1

T1松鼠聚會 求切比雪夫距離之和最小。 要去的點在“中間”,於是我就算算中間的點就過了 。 #include<cstdio> #include<cstring> #include<iostream> #include<cstdlib>

原创 網絡流24題

T1 飛行員配對方案 二分圖最大匹配,這裏寫個匈牙利算法 #include<bits/stdc++.h> using namespace std; const int maxn=105; struct edge{ int x,y,