原创 POJ3630 Phone List(字典樹)

題目大意: 輸入n個電話號碼,如果一個電話號碼是另一個的前綴輸出”NO”否則輸出”YES” 題目思路:本題要用到字典樹的插入和查詢: #include<cstdio> #include<cstring> struct node

原创 POJ3254 Corn Fields(狀態DP)

題目大意: 給出一個M*N的矩陣,元素爲0表示這個地方不能種玉米,爲1表示這個地方能種玉米,現在規定所種的玉米不能相鄰,即每行或者沒列不能有相鄰的玉米,問一共有多少種種植方法。 思路狀態DP: #include<iostrea

原创 POJ 1611 The Suspects( 並查集)

題目: 嚴重急性呼吸系統綜合症( SARS), 一種原因不明的非典型性肺炎,從2003年3月中旬開始被認爲是全球威脅。爲了減少傳播給別人的機會, 最好的策略是隔離可能的患者。 在Not-Spreading-Your-Sickne

原创 POJ2155 Matrix(二維線段樹)

題目大意: 有一個n*n的由零組成的矩陣,給定q個操作,C爲將x1y1爲左下角,x2y2爲右下角的矩陣取反值。Q爲輸出xy的的0,1狀態。 思路:二維線段樹(樹套樹)的建造和訪問: # include<stdio.h> # i

原创 POJ2486 apple tree(樹形DP)

題目大意: 給出一個有n個節點的樹,每個節點上有個權值,問不超過k步最多能遍歷到的權值。 輸入: 輸入n和k,然後是n個節點的值,然後是n-1個i j代表了i和j節點相鄰。 輸出:最多能遍歷到的權值。 思路:樹形d

原创 POJ1088 滑雪(記憶化搜索)

題目: Michael喜歡滑雪百這並不奇怪, 因爲滑雪的確很刺激。可是爲了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待升降機來載你。Michael想知道載一個區域中最長底滑坡。區域由一個二維數組給

原创 POJ3264 Balanced Lineup(線段樹靜態)

題目大意: 一位農夫有n頭牛,給出每頭牛的身高。求q個範圍內的牛中最高的和最矮的身高差。 思路:線段樹求一個序列中的最大值和最小值: # include<stdio.h> # include<stdlib.h> # inclu

原创 POJ2352 Stars(樹狀數組)

題目大意: 給出n個y座標遞減的星星座標,每個星星都有一個一個等級是這顆星星下邊和右邊的星星總數(水平垂直也算)。 大體思路:用樹狀數組統計處在下邊和左邊的星星總數,下邊不用算,因爲y座標遞減。只要算在第i可星星前輸入的有多少

原创 POJ3342 Party at Hali-Bula(樹形DP)

題目大意: 有n個人要一起聚會,規定直接上司不能和他的直接下屬一起出席。問最多能去幾人是唯一解嗎? 題目思路:樹形DP+鏈試前向星: #include<iostream> #include<cstdio> #include<c

原创 USACO Training Section 1.5(八皇后升級)

題目: 檢查一個如下的6 x 6的跳棋棋盤,有六個棋子被放置在棋盤上,使得每行、每列有且只有一個,每條對角線(包括兩條主對角線的所有平行線)上至多有一個棋子。上面的佈局可以用序列2 4 6 1 3 5來描述,第i個數字表示在第i

原创 POJ3345 Bribing FIPA(樹形DP)

題目大意: 一個國家想賄賂至少m個國家,給出賄賂每個國家需要的錢及他們的附屬關係。如果賄賂了主國,其附屬國家也同樣視爲被賄賂了,且保證關係網沒環,和一個國家最多隻能被一個國家控制。 題目思路:本題要用到樹形揹包和字符串處理,字

原创 HDU1561 The more, The Better(樹形DP)

題目: ACboy很喜歡玩一種戰略遊戲,在一個地圖上,有N座城堡,每座城堡都有一定的寶物,在每次遊戲中ACboy允許攻克M個城堡並獲得裏面的寶物。但由於地理位置原因,有些城堡不能直接攻克,要攻克這些城堡必須先攻克其他某一個特定的

原创 合併果子(堆寫法)

題目大意: 一個小朋友從樹上打下了幾堆果子。要將所有果子合併成一堆。給出沒堆果子的重量求最小力氣 本題的思路是要將重量最小的先合併,也就是傳說中的哈夫曼樹!但本題的數據比較大。今天我們來看堆得寫法: # include<std

原创 POJ2019 Cornfields(記憶化枚舉版)

題目: Description 給出一個N*N (N<=250)的方陣,以及K(<=100000)個詢問。每次詢問如下:以(Xi,Yi)爲左上角,邊長爲B的子方陣中,最大值和最小值的差是多少? 注意對於所有的詢問,B

原创 POJ1463 Strategic game(樹形DP)

題目大意: 有一棵樹,要求找到最少放幾個士兵才能將所有點都看守到,每個節點的士兵只能看守臨近一個的節點。 題目思路:樹形DP: #include<iostream> #include<cstdio> #include<cstd