【樹形dp】poj 1947 Rebuilding Roads
Link:http://poj.org/problem?id=1947
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
/*
Anniversary party POJ - 2342
題意:有n個點組成一棵樹,問至少要刪除多少條邊才能獲得一棵有p個結點的子樹?
題解:dp[i][j] 代表以i為根節點,有j個節點的最小減邊數
dp[i][1] = 與子節點的邊數+1(與父節點邊);
for(int k = 1; k < j; k++) 列舉子節點貢獻的點個數
dp[i][j] = min(dp[i][j],dp[child[i]][k]+dp[i][j-k]-2) 加上這條於子節點相連的邊
(要減2,因為算dp[child][j]這條邊算了一次,dp[root][1]這條邊也算了一次)
最後答案dp[root][j]有點不同,他與父節點相連的一條邊減去的,實際上不需要減(因為他沒父節點)
*/
const int N = 155;
const int INF = 0x3f3f3f3f;
vector<int> tree[N];
int n,p;
bool isroot[N];
int dp[N][N];
void dfs(int root)
{
int len = tree[root].size();
dp[root][1] = len+1;
for(int i = 2; i <= p; i++)
dp[root][i] = INF;
for(int i = 0; i < len; i++)
{
int u = tree[root][i];
dfs(u);
for(int j = p; j > 1; j--) //01揹包的思路
{
for(int k = 1; k < j; k++)
dp[root][j] = min(dp[root][j],dp[u][k]+dp[root][j-k]-2);
}
}
}
int main(){
scanf("%d%d",&n,&p);
int u,v;
for(int i = 1; i < n; i++)
{
scanf("%d%d",&u,&v);
tree[u].push_back(v);
isroot[v] = 1;
}
int root = 1;
while(isroot[root])
root++;
dfs(root);
dp[root][p]--;
int mi = INF;
for(int i = 1; i <= n; i++)\
mi = min(mi,dp[i][p]);
printf("%d\n",mi);
return 0;
}
相關文章
- 樹形DP
- 樹形DP!
- 樹上染色(樹形dp)
- [筆記]樹形dp筆記
- 樹形DP二三知識
- 樹上的等差數列 [樹形dp]
- [樹形dp][HAOI2015]樹上染色
- HDU 6035 Colorful Tree(樹形DP)
- 熟練剖分(tree) 樹形DP
- UVA 1220 Party at Hali-Bula (樹形DP)
- cf633F. The Chocolate Spree(樹形dp)
- BZOJ 4726 [POI2017]Sabota?:樹形dp
- CCF之網路延時(樹形dp)
- POJ 3267 The Cow Lexicon(dp)
- POJ 3071 Football(概率DP)
- 【BZOJ3743】[Coci2015]Kamp 樹形DP
- 【動態規劃】樹形DP完全詳解!動態規劃
- SDOI2018 榮譽稱號(樹形dp)
- ZROJ#398. 【18提高7】隨機遊走(期望dp 樹形dp)隨機
- E73 樹形DP P3177 [HAOI2015] 樹上染色
- Luogu P3177 樹上染色 [ 藍 ] [ 樹形 dp ] [ 貢獻思維 ]
- 簡單dp -- Common Subsequence POJ - 1458
- POJ1390 Blocks (區間DP)BloC
- CF 1029E Tree with Small Distances 樹形DP or 貪心
- bzoj1060: [ZJOI2007]時態同步(樹形Dp)
- Making the Grade POJ - 3666(離散化+dp)
- POJ3252Round Numbers(數位dp)
- 石家莊1947
- NOIP2024集訓Day23 DP常見模型4 - 樹形模型
- CF1039D You Are Given a Tree (樹形 dp + 貪心 + 根號分治)
- POJ 3667 Hotel 線段樹
- poj 2667 hotel 線段樹
- 樹:基本樹形
- E62 樹形DP P8677 [藍橋杯 2018 國 A] 採油
- bzoj2427: [HAOI2010]軟體安裝(強聯通+樹形Dp)
- POJ 2253 Frogger(Floyd Dij Spfa變形)
- 「暑期訓練」「基礎DP」 Common Subsequence (POJ-1458)
- 二叉搜尋樹 [四邊形不等式優化區間dp]優化
- Luogu P11363 NOIP2024 樹的遍歷 題解 [ 紫 ] [ 樹形 dp ] [ 組合計數 ] [ adhoc ]