航線設定
問題描述
在美麗的萊茵河畔,每邊都分布著n個城市,兩邊的城市都是唯一對應的友好城市,現需要在友好城市間開通航線以加強往來,但因為萊茵河常年大霧,如果開設的航線發生交叉就有可能出現碰船的現象。現在要求盡可能多地開通航線並且使航線不能相交。
輸入有若干組測試資料,每組測試資料的第一行是乙個整數n,它表示每邊都分布著n個城市(1<=n<=1000)。接著有n行,每一行有2個整數s,t,之間有乙個空格,s表示起點城市,t表示終點城市。
輸出對每組測試資料,首先在一行上輸出「case #:」,其中「#」為測試資料組號,從1開始編號。接著在下一行輸出「the maximal number is:」,緊跟著輸出這些城市間不相交的最大的航線數。
輸入樣例:
41 2
2 43 1
4 3輸出樣例:
case 1:
the maximal number is:2
思路:資料結構:a[s]=t;//表示s開往t
狀態:d[i]:=以第a[i]個城市為結尾的最大航線數;
狀態轉移方程:d[i]=
ans=0
;
for(int i=1;i<=n;i++)
printf(
"%d\n
",ans);
}return0;
}遊船費問題
( 動態規劃專題 ) 樹形dp
動態規劃專題 樹形dp 直接看例題 p2015 二叉蘋果樹 有一棵蘋果樹,如果樹枝有分叉,一定是分2叉 就是說沒有只有1個兒子的結點 這棵樹共有n個結點 葉子點或者樹枝分叉點 編號為1 n,樹根編號一定是1。我們用一根樹枝兩端連線的結點的編號來描述一根樹枝的位置。下面是一顆有4個樹枝的樹 2 5 3...
動態規劃專題(二) 樹形DP
dp 這東西真的是博大精深啊.樹形 dp 顧名思義,就是在樹上操作的 dp 一般可以用 f i 表示以編號為 i 的節點為根的子樹中的最優解。轉移的時候一般都將資訊由子節點轉移到父親節點,也就是將資訊從下往上轉移。因此,一般樹形 dp 都會採用遞迴的形式。樹形 dp 中有一種比較經典的題型 樹上揹包...
動態規劃專題(五) 斜率優化DP
斜率優化 dp 是難倒我很久的乙個演算法,我花了很長時間都難以理解。後來,經過無數次的研究加以對一些例題的理解,總算啃下了這根硬骨頭。斜率優化 dp 的式子略有些複雜,大致可以表示成這樣 f i min a j b j s i c i 其中 a j 和 b j 是兩個只與 j 有關的函式,s i 和...