Diversity HDU - 6725
給你一棵nn個(gè)點(diǎn)的樹,對于節(jié)點(diǎn)ii,你要給它標(biāo)上一個(gè)[li,ri][li,ri]之間的數(shù),要求所有邊兩端節(jié)點(diǎn)上標(biāo)的數(shù)字的差的絕對值的總和最大。
Input
第一行一個(gè)整數(shù)T(1≤T≤5)T(1≤T≤5)表示數(shù)據(jù)組數(shù)。對于每組數(shù)據(jù)格式如下。
第一行一個(gè)正整數(shù) n(2≤n≤105)n(2≤n≤105)。
接下來n?1n?1行,每行兩個(gè)正整數(shù) u,v(1≤u,v≤n)u,v(1≤u,v≤n),表示一條邊。
接下來nn行,第ii行兩個(gè)正整數(shù)li,ri(1≤li≤ri≤109)li,ri(1≤li≤ri≤109)。
Output
對于每組數(shù)據(jù),一個(gè)整數(shù)表示答案。
Sample Input
1
5
1 2
2 3
3 4
4 5
1 5
2 7
7 9
5 8
3 4
Sample Output
16
樹形dp。首先我們來想,某個(gè)節(jié)點(diǎn)選定的數(shù)一定是那個(gè)區(qū)間的端點(diǎn),因?yàn)槿绻菂^(qū)間中的一個(gè)點(diǎn)的話,某個(gè)端點(diǎn)一定比它更符合。這樣就在兩個(gè)端點(diǎn)中找一個(gè)。
dp[u][0]代表著u這個(gè)節(jié)點(diǎn)選擇左端點(diǎn)的最大值。dp[u][1]代表著u這個(gè)節(jié)點(diǎn)選擇右端點(diǎn)的最大值。
那么狀態(tài)轉(zhuǎn)移方程是:
dp[u][0]+=max(abs(p[u].x-p[to].x)+dp[to][0],abs(p[u].x-p[to].y)+dp[to][1]);
dp[u][1]+=max(abs(p[u].y-p[to].x)+dp[to][0],abs(p[u].y-p[to].y)+dp[to][1]);
dfs跑一遍之后就能求出來。
代碼如下:
努力加油a啊,(o)/~
總結(jié)
以上是生活随笔為你收集整理的Diversity HDU - 6725的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P2680 运输计划(树上差分+lca+
- 下一篇: Transformation HDU -