原创 主席樹初步

學習了一下主席樹,記錄一下 主席樹入門,有圖好評 hdu 2665 Kth number 題意: 靜態求第k小,多組數據 解題報告: 裸的主席樹 #include<cstdio> #include<algorithm> #defi

原创 BZOJ 4552: [Tjoi2016&Heoi2016]排序 [二分][線段樹]

題意: 給定一個數列{an },然後進行m 次操作,每次操作是對一個區間進行升序或降序排序,要求所有操作後位置q 上的數 解題報告: 不會樹套樹,只能膜線段樹題解 二分最終的答案x ,將原數列中小於x 的數變成0,大於等於的

原创 51nod 1288 汽油補給[貪心][st表][單調棧]

題面 考慮走到第i個城市,接下來,如果在裝滿油箱的情況下能走到的城市中,有油價比城市i低的城市:就加油到可以到這個城市爲止然後過去 否則在當前城市加滿油繼續 對於油價可以用st表維護最小值 每個城市可以到的城市可以用單調棧

原创 BZOJ 1911: [Apio2010]特別行動隊 [斜率優化dp]

題意 給出一個常數a,b,c和數列{xn },將其分成若干段每一段至少有一個數,並且每一段將產生一個貢獻爲a∗x2+b∗x+c 找到一種分組方案使貢獻和最大 解題報告 前兩天寫的沒來得及寫博客現在找不到推式子的草稿紙了…只好再推一

原创 51nod 1274 最長遞增路徑[dp]

題面 題意:給定一張有重邊有自環的無向圖,求一條最長的路徑使路徑的權值嚴格單調遞增 把邊從小到大排序後直接推 注意一下邊權相同的就好了 #include<cstdio> #include<algorithm> #define

原创 51nod 1494 選舉拉票&&cf458C

中文題面 考慮把所有人的票分別從大到小排序之後可以看做n條線段 枚舉自己的票數爲i,所以每條線段超過i的部分必須收買,如果還不夠就到前面挑不夠的 0≤b[i]≤104 求前k小想到權值線段樹(應該是類似的東西) #inc

原创 BZOJ 2150: 部落戰爭 [二分圖匹配][最小路徑覆蓋]

題面傳送門 題解 直接連邊然後做最小路徑覆蓋 最小路徑覆蓋=原圖點數-新圖最大匹配數 #include<cstdio> #include<vector> #include<algorithm> using namespace st

原创 BZOJ 3072: [Pa2012]Two Cakes [dp][記憶化搜索]

題意:原題很清楚了. 解題報告: 考慮暴力dp dp[p][q] 表示第一隻手在p另一隻手在q的最短時間 1.若a[p]==b[q] 則dp[p][q]=min(dp[p−1][q],dp[p][q−1])+1 2.若a[

原创 CF 717E[dfs]

題意:給定一棵樹,每個節點初始有顏色,共兩種顏色.你一開始在點1,走到哪個點就把它的顏色改變.輸出一種合法的方案使最終的樹顏色都變爲1 . dfs構造 對每個節點如果當前爲-1就從它到父親節點走一遍 如果當前是root爲-1沒

原创 日記<持續更新>

4.3莫名想開一個日記,有時間就記一些不大不小的事,比如每天學了什麼或者路遇哪位神犇最主要的目的是要監督一下自己的學習進度發現自己有個大毛病是學的東西記不久,大致原因我想了想有兩點:理解不深;學的時候只打模板題生活在惶恐之中,所以逆流而上

原创 BZOJ 1927: [Sdoi2010]星際競速 [最小費用最大流]

題面傳送門 題解 類似DAG上的最小路徑覆蓋 最小費用流,建圖 令源點爲S ,匯點爲T : S向所有入點連容量爲1,費用爲0的邊 S向所有出點連容量爲1,費用爲ai 的邊 所有出點與T連容量爲1,費用爲0的邊 對於有邊的(ui,v

原创 51nod 1378 夾克老爺的憤怒[貪心][樹形dp?]

//發現以前沒寫清楚,補一下坑 假如是鏈上的話就直接貪心搞,每隔2∗k 放一個守衛 現在搞到樹上 遞歸處理,f[i]表示節點i的子樹已經全受控制,還可以向上控制f[i]個單位 搜到當前位置需要處理的情況: 1.如果f[i

原创 BZOJ 2186: [Sdoi2008]沙拉公主的困惑 [歐拉函數][逆元]

題意: 給定n,m(n≥m) ,求[1,n!] 和m! 互質的數的個數 解題報告: 分成兩部分,第一部分是[1,m!),這部分的答案就是ϕ(m!) 第二部分是[m!,n!],我們知道有gcd(a,b)==gcd(a+b,b) 所以

原创 BZOJ 1999: [Noip2007]Core樹網的核[dfs]

1.對於樹中的任意一點,距離其最遠的點一定是樹的直徑的某一端點 2.同一棵樹的直徑的中點相同(題目裏給出來的,雖然不知道怎麼用) 3.要求的一定在直徑上,並且越長越好(不在直徑上的點到端點的距離≥ 直徑上的點到端點的距離,都取

原创 51nod 1611 金牌賽事&&cf115E [線段樹]

感覺思路很清晰 想到dp,按比賽所需的道路右端點排序 f[i]表示舉辦第i場比賽爲止能獲得的最大利潤 然後按順序把每場比賽的收益加入線段樹求個最值即可維護最大獲利 #include<cstdio> #include<algo