原创 PKU 3177 Redundant Paths - 無向圖的雙連通分量和橋

題目大意: 給出一個無向連通圖,判斷最少需要加多少條邊,才能使得任意兩點之間至少有兩條相互"邊獨立"的道路.注意,可能含有重邊. 分析: 顯然,在同一個雙連通分量裏的所有點可以等價地看做一個點.收縮後,新圖是一棵樹,樹的邊是原無向圖的橋.

原创 ZJU 2588 Burning Bridges - 無向圖的橋

題目大意: 給出一個無向圖,N個頂點M條邊(N<10 000,M<100 000)。求出圖中橋的個數及編號。注意,可能出現重邊。 分析: 題目就是要求無向圖的橋。至於重邊的處理,只要頂點ij之間有重邊,那麼這些重邊任何一條都不可能是橋。

原创 PKU 1659 Frogs' Neighborhood - 貪心 Havel定理

題目大意: 給出一個無向圖的頂點度序列{dn},要求判斷能否構造出一個簡單無向圖。若能構造任意一個輸出鄰接矩陣。 分析: 今年哈爾濱賽區也出了一個一樣的題目,而且只要求判定不需要構造。當時我們是用貪心做的,只是到最後也不知道爲什麼是正確的

原创 PKU 3261 Milk Pattern - 後綴數組+LCP

題目大意: 給出長度爲n的數字序列(n<20,000),求重複出次數不小於k的最長子序列(連續)的長度。例如序列 1 2 3 2 3 2 3,k=2,那麼序列2 3 2 3重複出現了兩次,長度爲4。 分析: 此題可以用後綴數組的最長公共前

原创 ZJU 2604 Little Brackets - 動態規劃 Catalan數變形

題目描述: 定義一個括號序列的Depth爲最深的嵌套層數。問n對括號,depth爲k的括號序列共有多少種。 分析: 很類似Catalan數的題目。回憶經典的Catalan數:f[n]表示n對括號能夠組成多少種不同的序列。那麼可以得出f[n

原创 ZJU 1990 Subway tree systems - 樹的最小表示

題目大意: 初始時站在樹的根節點,若朝着遠離根的方向走,記錄“0”,接近根的方向走記錄“1”。並且樹的每一條邊只能來回走一次(即向下和返回)。一個合法的01序列可以描述出一棵樹的形態。現在給出兩個合法的01序列,判斷兩棵樹是否同構。 分析

原创 PKU 2513 Colored Sticks - Trie樹+並查集+歐拉通路

題目大意: 有n根棍子(n<250000),每根棍子兩端都塗上顏色,顏色用長度小於10的字符串表示,問能否將所有的棍子排成一排,使得每兩根棍子銜接的地方顏色相同. 分析: 題目很明確,將所有的顏色看做節點.連接兩種顏色的棍子看做節點之間的

原创 PKU 3678 Katu Puzzle - 2-SAT判定

題目大意: n個布爾變量Xi,現在有m個約束條件,給出Xi op Xj = c,給出每個i j c 和 op。其中op可能是AND,OR,XOR。要求這n個布爾變量是否存在一組可能的取值,使得滿足所有的約束條件。 分析: 題目可以轉換爲一

原创 PKU 2762 Going from u to v or from v to u? - 單連通圖判定

題目大意: 給出一個有向圖n個頂點m條邊,判斷是否能任意選擇兩個點u,v,都至少存在一條通路從u到達v或v到達u,也就是u,v之間存在單向的通路。 分析: 首先將有向圖的極大強連通分量收縮成一個點,構成新的有向無環圖G'。現在要判斷新圖G

原创 [總結]2009珠海賽 熱身訓練

很久沒有在一起做題,很不順利。看完題目之後感覺都不難,所以最初的策略定位是三個人自己攻自己的題目,求速度。 最開始許翰中看完H就覺得是簡單的DP,就去想去了。我從C開始看。尚鵬從A開始看。 良久,我看完了C,D,E,尚鵬看完了A,B。我和

原创 PKU 1236 Network of Schools - 最小點基

題目大意: N個高校之間有一些單向的網絡鏈接(N<100),當發佈一個軟件時,學校i收到軟件時,它可以將軟件發送給所有它鏈接到的學校。現在要求發佈一款軟件,最少需要發給多少個學校,使得所有學校都可以收到軟件(問題A)。最少需要添加多少條單

原创 ZJU 1060 Sorting It All Out - 拓撲排序

ZJU1060 PKU1094   題目大意: 輸入n和m,表示字母表的前n個字母,總共有m組小於關係(即A < B這樣的關係)。要求能否構成唯一的排序,給出的偏序關係中是否有衝突。注意,如果在第k個關係時就能確定唯一的序列,或產生衝突,

原创 ZJU 1002 Fire Net - 二分圖最大匹配

題目大意: 一個N*N的網格中(N<=4),有些格子是牆。問在這個網格中最多能放置多少個士兵,使得他們在四個方向上不能相互攻擊。 分析: 這是一個古老的題目了,我最開始學ACM的時候一眼就能看出來這是一個搜索題,並且也能毫不費力地寫出一段

原创 PKU 3041 Asteroids - 行列的二分圖模型 最小點覆蓋

題目大意: N*N的空間中有K個小行星,使用超級武器可以一次性清理一行或一列的所有小行星.但是超級武器很貴,給出星空圖,問最少需要使用多少次武器能清除所有的小行星.N<500, k<10,000 分析: 很經典的行列模型轉換爲二分圖模型來

原创 PKU 2942 Knights of the Round Table - 無向圖的塊 判斷奇圈

題目大意: N個騎士某些騎士之間會有仇恨。騎士們開會時圍坐在一個圓桌旁。一次會議能夠舉行,當且僅當沒有相鄰的兩個騎士相互仇恨,且開會人數爲大於2的奇數。若某個騎士任何會議都不能參加,那麼就必須將它踢出。給出騎士之間的仇恨關係,問需要踢出多