原创 BZOJ 1007, 水平可見直線

Problem 傳送門 Mean 參見題目描述。 Analysis 將直線按斜率排序,然後從小到大依次入棧,入棧時計算該直線與棧頂元素交點。 若該交點在棧頂元素與棧頂下一個元素交點的左側(或重合),則棧頂元素被完整遮擋,出棧。

原创 BZOJ 2002, 彈飛綿羊

Problem 傳送門 Mean 輸入鏈上各彈力裝置的彈力系數,要求支持修改彈力系數以及查詢綿羊被彈幾次後彈飛。 Analysis LCT可做,而且時間複雜度優。 分塊雖然慢一些但是編程複雜度比較低。(其實是我不想學LCT……)

原创 BZOJ 3668, 起牀困難綜合症

Problem 傳送門 Mean 在0到m間選取一個數,使其經過若干次關於某個值的OR, XOR或AND運算後所得結果最大。 Analysis 二進制下從高位到低位貪心即可。 運算結果相同的情況下當前位取0優於取1。 Code

原创 BZOJ 1082, 柵欄

Problem 傳送門 Mean 參見題目描述。 Analysis 二分+搜索。 二分可能得到的符合條件的木板數,再搜索驗證。 爆搜的姿勢很要緊,寫一個美觀一點的搜索不僅複雜度小而且方便剪枝…… 搜索時優先匹配較小的木板,顯

原创 BZOJ 1026, Windy數

Problem 傳送門 Mean 求區間[A,B]中相鄰位數字之差均大於1的元素個數。 Analysis 數位DP。 第一次寫這中類型的DP題,細節處理上還是有很多盲點,花了不少時間來調試。 solve(b+1)-solve(

原创 BZOJ 1500, 維修數列

Problem 傳送門 Mean 編寫一個支持插入、刪除、修改、翻轉、求和以及求和最大子序列的數據結構。 Analysis Splay無疑。 但是寫太醜也是會TLE的,比方說插入的時候應該以建樹的形式插入,而不是一個點一個點的形

原创 BZOJ 1002, 輪狀病毒

Problem 傳送門 Mean 在一個n輪狀基中刪去若干條邊,使得各點之間有且僅有一條通路。 Analysis 遞推公式 f[i]=f[i-1]*3-f[i-2]+2 正解是基爾霍夫矩陣,然而我並不知道這是什麼東西…… (我

原创 BZOJ 1012, 最大數

Problem 傳送門 Mean 編寫一個支持查詢末尾L個數中最大數和在數列末尾插入的數據結構。 Analysis 乍一看覺得得寫Splay,其實只是利用單調性就可以解決了。 當然這題做法很多,線段樹什麼的都可搞。但是弱渣寫不動

原创 BZOJ 2049, 洞穴勘測

Problem 傳送門 Mean 要求編寫一個數據結構,支持動態連邊、刪邊和查詢兩點連通性。 保證兩點間最多隻有一條路徑。 Analysis LCT模板題。 (其實並查集更好些?) 借這題大致瞭解了一下LCT,順便回顧了一下

原创 BZOJ 2243, 染色

Problem 傳送門 Mean 要求編寫一個數據結構,維護一顆無根樹各節點的顏色以支持查詢兩點間的路徑上顏色段的數量。 Analysis 樹鏈剖分+線段樹。 線段樹各節點保存區間左端點、右端點的顏色,區間內顏色段數量,以及線段

原创 BZOJ 1051, 受歡迎的牛

Problem 傳送門 Mean 求可以被除自己以外所有點遍歷到的點的個數。 Analysis 首先強連通分量跑一遍,縮點之後統計每個強連通分量(可以視爲一個點)的出度。 如果有多個出度大於0,則無解;否則輸出唯一出度爲0的強連

原创 BZOJ 1001, 狼抓兔子

Problem 傳送門 Mean 求平面圖最小割。 Analysis 數據範圍太大導致直接跑最大流會TLE(然而據說只要姿勢不太醜都能水過去)。 正確做法是平面圖轉對偶圖,就可以把最小割問題轉化成求最短路(Orz,太神了……)。

原创 BZOJ 1003, 物流運輸

Problem 傳送門 Mean 參見題目描述。 Analysis 動態規劃+最短路。 狀態轉移方程爲f[i]=min(f[j-1]+d[m]*(i-j+1)+k),1≤j≤i≤n。d[m]爲每次狀態轉移計算所得當前可行的最短路

原创 BZOJ 3224, 普通平衡樹

Problem 傳送門 Mean 編寫一個支持插入、刪除元素,查詢元素排名,查詢相應排名的元素,查詢元素前驅與後繼的數據結構。 有重複元素存在,且查詢前驅後繼的元素可能未出現在樹中。 Analysis Treap和Splay都可

原创 BZOJ 1015, 星球大戰

Problem 傳送門 Mean 編寫一個支持刪點並查詢當前圖中連通塊個數的數據結構。 Analysis 離線倒序處理+並查集。 於是刪點就變成了加點,因此不必考慮正序處理時刪邊後兩點是否仍連通的問題。 先將所有未刪除的點加入