原创 【BZOJ4636】蒟蒻的數列【掃描線】【set】

【題目鏈接】 從Claris那裏學來的掃描線做法。 /* Think Thank Thunk */ #include <cstdio> #include <cstring> #include <algorithm> #include <

原创 【BZOJ4631】踩氣球【暴力】【線段樹優化】

【題目鏈接】 記錄每個盒子被哪些熊孩子的區間覆蓋,用鏈表存起來。 又因爲熊孩子的區間是連續的,所以用線段樹優化一下就行了。 注意空間大小,不然容易RE WA /* Think Thank Thunk */ #include <cstdi

原创 【BZOJ4579】[Usaco2016 Open]Closing the Farm【並查集】【離線】

【題目鏈接】 感覺和BZOJ1015差不多。。 題解: 倒着考慮操作,就變成了加邊。 記錄當前時刻有多少個連通塊,如果有一個,那麼答案是YES,否則是NO。 對於當前點,把當前點與已經添加進的點合併。每合併一次,連通塊減一。(一開始連通

原创 【BZOJ2039】[2009國家集訓隊]employ人員僱傭【最小割】

【題目鏈接】 【POPOQQQ的題解】 被卡題意了。。 /* Think Thank Thunk */ #include <cstdio> #include <cstring> #include <algorithm> using na

原创 【BZOJ1927】[Sdoi2010]星際競速【最小費用最大流】

【題目鏈接】 有點神... 【BLADEVIL的題解】 /* Think Thank Thunk */ #include <cstdio> #include <cstring> #include <algorithm> using na

原创 【BZOJ2121】字符串游戲【區間DP】

【題目鏈接】 int開成bool,調了半天... 設ok[i][j]表示模板串[i, j]這段是否能被刪除完,再設dp[i]表示模板串[1, i]刪除之後最少剩多少字母,那麼顯然有 dp[i] = dp[i - 1] + 1 if(ok

原创 【BZOJ1806】[Ioi2007]Miners 礦工配餐【DP】

【題目鏈接】 設dp[i][a1][a2][b1][b2]表示,前i個食物,第一個礦場最後兩次的食物分別爲a1、a2,b1、b2同理,所得到的最大煤炭數。 /* Think Thank Thunk */ #include <cstdio>

原创 【BZOJ4580】[Usaco2016 Open]248【區間DP】【或 貪心】

【題目鏈接】 以爲adjacent是不同的意思,結果是相鄰23333,寫了個貪心WA了一發。 題解: 設dp[l][r]表示將l和r合併之後,得到的最大的數,於是就可以轉移了 dp[l][r] = dp[l][k] + 1(dp[l][

原创 【BZOJ4078】[Wf2014]Metal Processing Plant【2-SAT】【二分】【二分圖】【並查集】

【題目鏈接】 考慮比較暴力的方法,我們枚舉兩個集合的最大值S1, S2,那麼我們可以用2-SAT來判斷合法不合法(如果i, j之間的值大於S1,那麼如果i在第一個集合,j只能在第二個集合,其他類似)。 我們將邊權從大到小排序,依次枚舉S1

原创 【BZOJ1069】[SCOI2007]最大土地面積【凸包】

【題目鏈接】 顯然四個點都在凸包上,按逆時針設爲i, a, j, b,枚舉i和j,a和b都是單調的,複雜度爲O(n^2) 閒得無聊寫了個暴力。。 /* Forgive me Not */ #include <cstdio> #inclu

原创 【BZOJ1867】[Noi1999]釘子和小球【DP】

【題目鏈接】簡單DP。。 注意輸出不能有換行。 /* Think Thank Thunk */ #include <cstdio> #include <cstring> #include <algorithm> using namesp