原创 CodeForces - 859E Desk Disorder 思維 + 並查集判環

傳送門:Codeforces 859E 題意:有N個人和2N個座位。告訴你這N個人它們現在的座位。以及它們想去的座位。 每個人可以去它們想去的座位或者就坐在原來的座位上。 新的座位安排和舊的座位安排,都不允許一個座位被兩個人佔據的情況。

原创 HDU 6215 Brute Force Sorting 鏈表 + 隊列(模擬)

傳送門:HDU 6215 題意:有長度爲n的序列,定義若某個元素a[i]爲‘順序’則必須滿足 a[i - 1] <= a[i] <= a[i + 1],特殊的,序列頭尾滿足 a[1] <= a[2], a[n - 1] <= a[n],每

原创 HDU - 5726 GCD 數學 + 思維

傳送門:HDU 5726 題意:給定一段長度爲n的序列和m個詢問,每次詢問l,r區間的gcd是多少,和區間l,r的gcd相同的區間有多少個。 思路:HDU5869簡化版,詳見 點擊打開鏈接 代碼: #include<bits/stdc++

原创 HDU - 5514 Frogs 容斥(技巧)

題意:給你n種步長,無限走一個圈,圈長m,位置標號從0到m−1,求至少被經過一次的位置之和。  思路:來自:點擊打開鏈接 大致思路就是用兩個數組記錄每一個因子該算幾遍和已經算了幾遍了。 代碼: #include<bits/stdc++.

原创 HDU - 5046 Airport 二分 + DLX可重複覆蓋

題意:給定n個城市的座標,要在城市中建k個飛機場,使任意城市距離最近的飛機場的最大值最小,求這個最小距離。 思路:最大值最小化是典型二分條件,然後就是如何check,將每對距離小於二分值的兩個機場稱爲互相可覆蓋,構造n * n的矩陣,機場

原创 HDU - 4778 Gems Fight! 記憶化搜索 + 狀壓

傳送門:HDU4778 題意:有 G 種顏色的寶石,放在 B 個袋子裏,兩人輪流選袋子(每個袋子只能被選 1 次),每次將選出來的袋子中的寶石放到 cooker 中,cooker 可能會起反應。 反應條件是 cooker 中出現至少 S

原创 HDU - 5040 Instrusive 預處理 + bfs + 優先隊列

傳送門:HDU 5040 題意:給定一張圖,Matt要從M移動到T取偷東西,N,W,S,E表示這些位置有監控器,字母表示這些監控器的初始方向,並且每一秒順時針旋轉90度。現在Matt每移動一格需要花一秒,但是如果當前他所在的位置或者他要去

原创 HDU - 4587 TWO NODES 求割點變形(去掉一個割點能得到的最大連通塊數)

題意:給出一張圖,問從中任意去掉兩個點及其鄰接邊,所有可能情況剩下的圖中連通塊的數量最大是多少。 思路:先枚舉去電其中一個點,剩下的一個點用tarjan求無向圖割點類似的方法求個最大值,具體就是當一個點能成爲割點時,我們不是將其標記出來,

原创 HDU - 5517 Triple 二維樹狀數組

題意:有二元組(a,b),三元組(c,d,e)。當b == e時它們能構成(a,c,d)。  然後,當不存在 [ (u,v,w)!=(a,b,c)且u>=a,v>=b,w>=c ]時,則是一個better集合裏的元素。  問這個bette

原创 HDU - 5033 Building 單調棧(好題)

傳送門:HDU 5033 題意:有一排建築物坐落在一條直線上,每個建築物都有一定的高度,給出一個X座標,高度爲0,問X位置能看到的視角是多少度,保證X左右有建築物。 思路:很容易想到用單調棧單調隊列什麼的去維護,但就是想不出來該怎麼維護。

原创 HihoCoder - 1233 Boxes 狀壓 + bfs預處理

傳送門:HihoCoder - 1233 題意:有n個盒子放在n個放盒子的位置,每個盒子大小不一樣,每次可以將一個盒子往它相鄰的位置移懂,但是隻能把小的盒子放到大的盒子上。求最少需要移動多少次之後盒子能從小到大排列地放在每個位置(每個位置

原创 HDU - 4803 Poor Warehouse Keeper 貪心 + 思維

題意:給出兩種操作: 如果按下按鈕1,會使數量+1,總價對應增長單價數目(因此按下按鈕1不會改變單價) 如果按下按鈕2,會使總價加1,數量不變(按下按鈕2會使單價增加) 現在問至少多少步可以使得   按鈕1數字爲x, 按鈕2數字爲y; 思

原创 CodeForces - 855C Helga Hufflepuff's Cup 樹形DP

傳送門:Codeforces 855C 題意:給你一棵樹,可以染m種顏色(1~m),現在定義一種特殊顏色k,一棵樹上最多能有x個特殊顏色,如果一個節點爲特殊顏色k,那麼他相鄰的節點的值只能選比k小的顏色。現在問你一共有多少種染色的方法。

原创 CodeForces - 859D Third Month Insanity dfs + 概率期望

傳送門:Codeforces 859D 題意:有 2^n 個隊伍進行比賽,每次都是編號相鄰的的兩隊伍比賽,勝出的晉級下一輪,失敗的淘汰,這樣n輪過後只剩一隻隊伍時停止。每一場比賽你都可以賭某個隊伍贏,第一輪賭中了獲得一分,後面每輪賭中得分

原创 HDU - 4424 Conquer a New Region 並查集好題

題意:給定N個點的樹。定義d(u,v)爲路徑u到v的容量,其值爲路徑上最小的邊權。求一個點作爲root,使得其他所有點到該點的容量和最大,求最大值。 思路:考慮邊權最小的邊e,則root一定在其左子樹或者右子樹上,假設在左子樹上,那麼e的