hdu 3586 樹形dp 二分

2021-06-16 15:18:43 字數 697 閱讀 2654

題意:給n個節點的樹,要求使葉子節點與根斷開,割掉的邊的權值和不超過m。求這些被割邊的權值最大中的最小。

dp 【u】+=min(dp【v】,w),w 為 u 到 v 的權值。

如果w 大於二分的 mid dp【u】+=dp【v】;

二分列舉邊權。

#include#include#include#includeusing namespace std;

#define ff freopen("input.txt","r",stdin)

#define ll long long

#define inf 1000020

const int n=1010;

int head[n];

struct point

edge[n*2];

int tot;

inline void init()

void add(int u,int v,int w)

int dfs(int u,int k,int s)

if(!flag) sum=inf;

return sum;

}int main()

//如果滿足條件,更新答案。

else l=mid+1;

}printf("%d\n",ans);

}return 0;

}

hdu 3586 樹形dp 二分

題目大意 給定n個敵方據點,1為司令部,其他點各有一條邊相連構成一棵 樹,每條邊都有乙個權值cost表示破壞這條邊的費用,葉子節點為前線。現要切斷前線和司令部的聯絡,每次切斷邊的費用不能超過上限limit,問切斷所 有前線與司令部聯絡所花費的總費用少於m時的最小limit。1 n 1000,1 m ...

hdu 2604 DP 矩陣二分

實際上就是這樣乙個問題,乙個序列僅由1和0組成,問n位不帶101和111子串行有多少個,結果模m 話說這是集訓的一道題,當時完全沒思路,今天做了一下,還是沒有做出來,不過好歹還會用最裸的記憶化搜尋。但肯定超時 話說集訓那時真的弱爆了。超弱的1b 看了下解題報告,發現1維dp既能搞定,再用矩陣二分。其...

hdu 1025 dp 二分 模板

題意 在一條河的兩邊各有n個位置,在這些位置之間建橋,要求所有橋之間不能交叉。現在告訴你所有可以建橋的位置,例如2,4,就是說河左邊的位置2可以與河右邊的位置4之間建橋,現在要求滿足要求的情況下最多可以建橋的個數。分析 想了好久發現是乙個最長上公升子串行問題,當時n比較大,所以一般的dp演算法不能解...