開學之前博客一直處於咕咕咕狀態,原因有兩個,第一我懶,第二我沒圖
Owen 頹廢了一個八月,天天看番,開學前還打了幾部 gal...為了防止自己頹廢,開了一個博客。
10.27
sb 聯考,一天 fst 一題,明明能 ak 的掛成 sb,真的 sb。
昨天 div2 也是,細節沒考慮到,fst 了一題,兩題沒時間打了,真的 sb。
要好好反省一下了。
10.26
打了一下 div2,E,F 都不會。。。
CF1251:
E2: 貪心,將 m 從大到小排序,用堆維護。
F: 注意到集合中一個子集和子集的補集可以對應左右兩個序列,然后如果兩個數我們可以用兩個狀態表示它放左邊還是右邊。
09.07
記得構造 (x,y) 選哪個的時候不能 swap!九校 D1T3 就這么掛了。。。
09.06
codeforces VP:
983,1208,1205,925,1137,1214.1178.
Codeforces Round #545 (Div. 1) (1137)
A. Skyscrapers
離散化一下,取個 max 即可。
B. Camp Schedule
猜結論,取最長 border。這個東西可以 kmp, 然后就直接構造。
C. Museums Tour
暴力拆點,(x,i) 向 (y,i+1) 連邊。\(5\times 10^6\) 跑 tarjan 有點卡常,而且空間也有點卡。
D. Cooperative Game
一道不錯的老題,floyd 找環法。一個點速度為 1,一個點速度為 2,這時正好速度為 1 的點在環上的距離 \(x\equiv -t(\text{mod}\ c)\),然后直接走 t 步就行了。步數大概是 3t+2c。
E. Train Car Selection
一道不錯的思維題。觀察性質,\(b,s>0\),那么每次放多少個,開頭那個始終是最小的,並且若在開頭放 0,那么 0 后面的數一定沒有貢獻,全部刪掉。若有 3 操作的話,我們維護兩個標記,全局加 k,b。我們對剩下的點維護一個下凸殼,全局加的時候就暴力把結尾不符合下凸殼的數刪掉。注意,因為有全局加標記,所以剛開始放結尾的數一定是 \((n,-kn-b)\),n 是未加數時的序列長度。時間 \(O(m)\)。
F. Matches Are Not a Child's Play
一道不錯的數據結構題。
我們先考慮整棵樹的最大值和次大值,每次刪除的時候肯定是刪成只有次大值到最大值的路徑,然后從次大值刪到最大值。那么我們可以知道肯定是一條條鏈刪過來,這樣的話我們用最大值為根,LCT 上每個 splay 維護子樹最大值到根的路徑。那么現在我們只需要單點查這個點屬於哪個最大值,那么答案肯定是最大值<當前最大值的鏈長+這個點到次大值的距離。
這個求前綴和是帶修的,所以用樹狀數組維護。加上先前的 LCT,時間 \(O(n\log^2 n)\),常數很小。