bugzilla由n個基地組成。這n個基地被n-1段雙向地道連線在一起,每段地道都連線兩個基地,並且保證任意兩個基地之間都可以通過地道互相到達。bug就藏在其中的某段地道中。
開始時rc可以乘坐運輸機降落在任何乙個基地。每次到達乙個基地時,rc都可以選擇呼叫運輸機將他和他的部隊運輸到任意另乙個基地,或者進入與這個基地相鄰的一段地道進行搜尋。但為了防止bug跑進已經搜尋過的地道,他在離開乙個基地進入地道或登上運輸機時一定會將這個基地炸毀。基地一旦被炸毀就不再和與它相鄰的地道連線。但這樣一來,如果進入的地道另一端的基地已經在之前被炸毀,rc和他的部下就將被永遠困在地道中。因為地道生活並不有趣,所以在這種情況下rc是不會進入這段地道的。
不過,這也帶來了乙個問題,就是rc也許不能搜尋所有的地道了。現在rc想知道的是他最多能搜尋多少段地道。
第一行乙個整數n(2<=n<=100000),表示基地的個數。基地被編號為1~n的整數。
以下n-1行,每行兩個整數a和b,表示編號為a的基地和編號為b的基地間有一段地道。
乙個整數,表示rc最多能搜尋的地道的數目
612
3224
4546
4
資料範圍:
對於20%的資料,2 <= n <= 30
對於50%的資料,2 <= n <= 10000
先吐槽一波題目描述,其實大意:刪除最少的邊,使每個節點的度數小於等於2
證明:當這個點有大於1個葉子節點的時候,向下絕對會比向上更優。
因為如果和父節點連邊,必須放棄所有的葉子節點,這樣就會放棄所有與子節點相連的邊,比刪除與父節點連線的一條邊還多,沒那麼優。
其他的就跟樹形dp差不多,記憶化&遞迴一下,鄰接表儲存。
#include
#include
#include
#include
using
namespace std;
int n,h[
100001
],v[
100001
],s[
100001
],ans,tot;
struct node
a[200001];
void
add(
int x,
int y)
; h[x]
=tot;
}void
dfs(
int k,
int f)
for(
int i=h[k]
;i>
0;i=a[i]
.next)
if(s[k]
>2)
}int
main()
dfs(1,
0); cout/有些地道可能被炸毀,所以剩下的邊數就是能搜尋的
return0;
}
MT 174 凹凸無妨
已知函式 f x x 3 3x 2 ax b 對任意 a,b in r 存在 x in 3,0 使得 f x le m 成立,求 m 的範圍.求 displaystyle min max x 3 3x 2 ax b 解 由於 begin 6m a,b geq 2 f 3 3 f 2 f 0 geq ...
174 按奇偶排序陣列
題目描述 給定乙個非負整數陣列 a,返回乙個由 a 的所有偶數元素組成的陣列,後面跟 a 的所有奇數元素。你可以返回滿足此條件的任何陣列作為答案。示例 輸入 3,1,2,4 輸出 2,4,3,1 輸出 4,2,3,1 2,4,1,3 和 4,2,1,3 也會被接受。1 a.length 5000 0...
Cadence 17 4使用心得
目錄概述 1 新手學習 2 老手學習 作為eda中的佼佼者,學習cadence。還是有必要的,不管是出於興趣還是以後從事高薪工作,從目前市場來看,使用比較多的eda分別是 ad pads cadence,包括現在比較出名的嘉立創,它們也出來乙個eda工具,也比較優秀,分別支援網頁版本與pc端版本。學...