#include #include #include #include #include #include #define n 6005 //樹形dp poj2342
using namespace std;
struct tree
}p[n];
void dfs(int x)
return ;
}int main()
while(scanf("%d%d", &l, &k)!=eof&&l+k!=0)
for(t=1; t<=n; ++t)
}} return 0;
}
#include #include #include #include #include #include #include #include #include #define ll long long
#define inf 0x7fffffff
#define n 250
using namespace std; //hdu2412 樹形dp及最佳方案是否唯一
int dp[n][2], dup[n][2]; //dp[n][m]中m為0表示不來,m為1表示來, dup[n][m]表示最佳的方案是不是唯一的,dup[n][m]中m為0表示不唯一,m為1表示唯一
maps;
/*題意:n個人形成乙個關係樹,每個節點代表乙個人,節點的根表示這個人的唯一的直接上司,只有根沒有上司。
要求選取一部分人出來,使得每2個人之間不能有直接的上下級的關係,求最多能選多少個人出來,並且求出獲得最大人數的選人方案是否唯一。
思路:樹形dp
dp[x][0]+=max(dp[k][0], dp[k][1]); k是x的孩子
dp[x][1]+=dp[k][0];
*/struct node
}p[n];
void dfs(int x)
if(!s[s2])
id1=s[s1];
id2=s[s2];
p[id1].pre=id2;
p[id1].brother=p[id2].son;
p[id2].son=id1;
} dfs(1);
int ans, flag=0;
if(dp[1][0]>dp[1][1])
else if(dp[1][0]
#include #include #include #include #include #include #include #include #include #define ll long long
#define inf 0x7fffffff
#define n 2500
using namespace std; //hdu1054 樹形dp
int dp[n][2];
struct node
}p[n];
void dfs(int x)
return ;
}int main()
for(t=0; t
#include #include #include #include #include #include #include #include #include #define ll long long
#define inf 0x7fffffff
#define n 10100
using namespace std; //hdu 2196 樹形dp
int vis[n], pre[n], dp[n][3]; //dp[n][m]中n是節點編號, m為0表示從下到上節點的最大值, m為1表示從小到上第2大值, m為2表示從上到下的最大值
/*題意:給你一棵樹,求樹上各個節點到其他節點的距離中的最大值
思路:先用鄰接表建樹,樹形dp
*/struct node
p[n<<1];
void init()
void dfs1(int x) //從下到上
else if(dp[p[j].v][0]+p[j].w>bigger)
dp[x][0]=biggest;
dp[x][1]=bigger;
} return ;
}void dfs2(int x) //從上到下
}int main()
dfs1(1); //從下到上遞推,求出dp[n][0]和dp[n][1]
memset(vis, 0, sizeof(vis));
dfs2(1); //從上到下
for(t=1; t<=n; ++t)
printf("%d\n", max(dp[t][0], dp[t][2]));
} return 0;
}
樹形DP例題
dp感覺還是有點陌生,但是這個必須要強化,這類題型實在是太常見了 一道比較經典的樹形dp入門題。設dp陣列 dp root 0 表示對於該節點不選 dp root 1 表示對於該節點擊 則有 dp root 0 max dp son 0 dp son 1 dp root 1 dp son 0 主要可...
樹形DP 經典例題 沒有上司的舞會
一般樹形dp題目中都是其中某種狀況如果想要發生必須先完成先決條件 如 這道舞會題,要保證職員去參加舞會的話,必須滿足他的直接上司不去 還有的占領城堡的題,要占領乙個城堡必須先占領另乙個城堡。看到這樣的情況就考慮一下樹形dp 題目描述 ural大學有n個職員,編號為1 n。他們有從屬關係,也就是說他們...
樹形DP 樹形DP四例
是時候練一下dp了!我的題單 portkey f u,if fu,i 表示以u uu為根節點的子樹中保留i ii條樹枝的最大蘋果數 f u,i max f max f fu,i max這些題是菜,但也不能輕視啊!include using namespace std define in read i...