原创 NOIP2017 模擬考試 day2 2017.10.07

day2的題就有一點點有趣了。 T1dp/貪心,T2壓維+單調隊列,T3dijkstra/floyd打表。 怎麼說呢。。。T1是我自己不謹慎的問題,仔細想想就可以發現貪心是錯的,最後還好只卡了2個點。T2的話想了另一個方法但是怕T

原创 ACM-ICPC wf2014 金屬加工廠 metal 單調性維護+2_SAT

【問題描述】   定義集合S的價值D(S)爲:      現在給你n個元素,並給出其中任意兩個元素之間的d(i,j)值,要你將這些元素劃分成兩個集合A、B。求min{D(A)+D(B)}。注:d(i,j)=d(j,i)。

原创 異或樹 異或+二進制Trie

額。。。有實際上是兩道題但是第一道是ZZ題就不給出來了(就是把下面這個題改成有多少對點等於K然後把K和L的範圍縮小到500000而已,隨便玩玩異或的性質就出來了)。 而且我家題庫上面的測試數據只有一個點但是T=50真的是特別不要臉

原创 【省選模擬試題】排水系統 dijkstra+最短路徑樹+優先隊列維護(當然這個和dij的不是同一個)

【問題描述】   波賽多尼城有着複雜而有效的排水系統,爲城裏的居民提供生活上的便利。準確地說,城裏共有M條排水管道,連接着N座建築。每條排水管連接兩座不同的建築,水可以在排水管道內任意流動。兩座建築之間最多有一條排水管連接。在

原创 【省選模擬試題】減肥 樹的分治+排序

【問題描述】   小明長的很胖,爲了減肥,他經常到附近的郊區做運動。   那裏有N個村莊,編號爲1~N,而且對於任意兩個村莊,最多隻有1條雙向公路連接他們。另外,任意兩個村莊之間有且僅有一條路徑(公路的序列)。每條公路具有一

原创 【省選模擬試題】壓力 點雙連通分量縮點+樹上差分

題意概括:對於一個N點M邊的無向連通圖,給出Q條路徑,針對每個點回答必須經過這個點的路徑條數。 對於100%的數據,N≤100000,M,Q≤200000 實際上吧,還是很好想的,首先點雙連通分量(bcc)縮點成樹,然後搞成樹上

原创 【複賽模擬試題】奶牛臥室 篩法

【問題描述】   奶牛們有一個習慣,那就是根據自己的編號選擇牀號。如果一頭奶牛編號是a,並且有0..k-1一共k張牀,那麼她就會選擇a mod k號牀作爲她睡覺的地點。顯然,2頭牛不能睡在一張牀上。那麼給出一些奶牛的編號,請你

原创 UVA 12118 檢察員的煩惱 歐拉路徑(實際上是考理解啦)

【問題描述】   某國家有V個城市,每兩個城市之間都有一條雙向道路直接相連接,長度爲T。你的任務是找一條最短的道路(起點和終點任意),使得該道路經過E條指定的道路。   例如,若v=5,E=3,T=1,指定3條道路爲1-2、

原创 數論:整數的唯一分解定理及其應用小結

最近聽了一首歌(egoist的《永遠》,恕我不會寫日文),現在滿腦子都是這首歌非常的。。。不愉快,沒有辦法集中啊!!!QAQ太TM好聽了ORZ 爲了把這首歌洗掉,來做一個總結吧,內容如上所述。 整數的唯一分解定理:一個大於1的整數

原创 安全路徑 dijkstra+LCA+並查集思想

【問題描述】   精靈最近在農場上氾濫,他們經常會阻止牛們從農莊(牛棚1)走到別的牛棚(牛i的目的地是牛棚i)。每一個精靈只認識牛i並且知道牛i一般走到牛棚i的最短路徑。所以他們在牛i到牛棚i之間的最後一條牛路上等牛i。當然,

原创 NOI2012 迷失遊樂園 期望+樹形dp+基環外向樹

【問題描述】   放假了,小Z覺得呆在家裏特別無聊,於是決定一個人去遊樂園玩。進入遊樂園後,小Z看了看遊樂園的地圖,發現可以將遊樂園抽象成有n個景點、m條道路的無向連通圖,且該圖中至多有一個環(即m只可能等於n或者n-1)。小

原创 tarjan板子(割點割邊連通分量)

low函數實際上可以不開成數組的(話是這麼說,但是會佔用棧空間,所以說還是老老實實寫成靜態數組開在外面比較好)。 割點: void tarjan_point(int i,int fd)//給邊上標號來判定重邊 { dfn[

原创 並查集應用總結 內置例題

emmm。。。。。。在說其他的之前先給出我的並查集代碼: struct Union_Find{ int pa[maxn],stk[maxn],top; void Initial(int n) { for(int i

原创 UVA自由組合 DAG+拓撲排序

【問題描述】   有n種邊上帶標號的正方形,每條邊上的標號要麼爲一個大寫字母后跟一個加號或減號,要麼爲數字00。當且僅當兩邊字母相同且符號相反時,兩條邊能拼在一起(00不能和任何邊拼在一起,包括另一條標號爲00的邊)。   

原创 排序 gcd

【問題描述】   shell排序是衆多排序算法中的一種。給定N個互不相同的整數,存放在數組A中,排成升序。Shell排序的代碼段如下:   1|gap = X;   2|do   3|{   4|  ok=1;