原创 博弈論初級入門題目

詳細資料參見博弈論入門 hdu 1846 巴什博弈,只要n%(m + 1)==0肯定輸。 #include <cstdio> int main(){ int T ; int n ; int m ; //fr

原创 HDU 4320 Arcane Numbers 1

Arcane Numbers 1 題意:給出A,B(<=10^12) ,問能否將A進制下的有限小數轉化爲B進制下的有限小數。A進制下的小數可以表成:sum(ai*1/(A^i)),化成B進制就是要不斷的乘以B,所以B^m/(A^n)必須

原创 POJ 1192最優連通子集

最優連通子集 題目的描述太繁瑣了。。。其實意思簡單,就是給定若干個點,如果兩個點之間的曼哈頓距離小於1,就連邊。然後就構成一顆樹,然後每個點都 有一個權值,然後選取若干個點,使得權值和最大,並且點與點之前都連通。簡單的樹形DP,dp[i]

原创 POJ 2486 Apple Tree

Apple Tree 繼續將樹形DP題目給與整理。這個題目能很容易想到狀態,dp[i][j]表示以i爲根的子樹中走j步所能獲得的最大值。但是這樣狀態轉移的時候比較難寫,而狀態轉移比較麻煩的原因在於不能確定走到了哪一步。我們增加一維,dp[

原创 HDU 3853 LOOPS

LOOPS 期望DP。題目意思很容易理解,這裏就不再解釋了。方程dp[i][j]表示從i,j點出發到達(R , C)的消耗能量的期望值。題目給了狀態轉移的幾個方向,dp[i][j] = x1 * dp[i][j] + x2 * dp[i

原创 POJ 3071 Football

Football 計算概率的題目。模擬對應的過程,然後按照概率公式計算主要是在計算每一輪的每個人的可能的對手的時候比較麻煩。我們先計算出,每個人所屬的組,然後計算出每個人與其相鄰的組,也就是本輪所需要的PK的對手的組,然後對需要PK組一一

原创 POJ 3107 Godfather

Godfather 樹形DP簡單題,就是找到這樣的點:刪除該點後最大的連通子樹所包含的節點個數最小。然後將這些點依次輸出。dp[i] = max{dp[j] , n-number} , j是i的兒子節點,number是i所在子樹的總結點個

原创 HDU 4405 Aeroplane chess

Aeroplane chess 今年的網絡賽題目。那個時候還沒寫過期望概率DP的題目。之前蘇牛說讓我做一下期望概率DP的專題,但是沒做,結果就出了一道期望DP的題目。後悔啊。。。 最近學了一下期望DP,然後做到了這一題。現在發現這題真的是

原创 POJ 2378 Tree Cutting

Tree Cutting 給一棵n個節點的無根樹,問去掉哪個節點後可以使所有連通分支的節點數均<=n/2。很簡單的樹形DP,dp[i]表示去掉該節點後連通分支中最多的節點個數。然後dfs一遍,找出所有點的dp值,再掃一遍,遇到小於等於n

原创 POJ 2096 Collecting Bugs

Collecting Bugs 首個概率DP類題目。題意: 一個軟件有S個子系統,會產生n中bug 某人一天發現一個bug,這個bug屬於一個子系統並且屬於一個分類。每個bug屬於某個子系統的概率是1/s,屬於某個分類的概率爲1/n,求

原创 hdu 3627 Giant For

Giant For 線段樹+離散化。離線處理,由於查詢的時候我們需要找到所有滿足條件的結果中行最小且列最小的。我們以行建樹,然後將行對應的列中的值有set保存下來。首先將數據讀入,然後將行從大到小進行排序,維護一個區間中的列最大的值。添加

原创 ZOJ 3201 Tree of Tree

Tree of Tree 簡單Tree DP. 求一個含有k個節點的子樹,使得子樹上所有節點的權值和最大。方程:dp[i][j] 表示以i爲根的子樹中選取j個點所能獲得最大值,其中i點必須選,然後就是直接使用分組揹包就可以了。 /* *

原创 HDU 1011 Starship Troopers

Starship Troopers 樹形DP+分組揹包,根節點一定需要被攻佔。dp[i][j] : 在i節點派j個機器人,能獲得的最大概率。先不考慮根節點dp[i][j] = max{dp[i][j] , dp[i][j-k] + dp

原创 POJ 1241 Knockout Tournament

Knockout Tournament Tree DP 。很有意思的一個題目。給定了2^n個人每輪比賽的結果,然後推測每個人可能的最高排名與最低排名。由於給的是每輪比賽的結果,所以題目在數據的讀入與處理方面比較麻煩。如果編號爲i的人贏了編

原创 POJ 1155 TELE

TELE 這個題目擱置了好久纔有重新拿過來做的。 題目意思不難理解。TreeDP + 分組揹包 方程: dp[i][j] = max{ dp[i][j] , dp[i][k] + dp[s][j-k] - edge[i][s]},其中s表