6月雅禮集訓 2017 Day11 tree

2022-03-26 01:01:40 字數 1321 閱讀 3229

【題目大意】

給出一棵帶權樹,有兩類點,一類黑點,一類白點。

求切斷黑點和白點間路徑的最小代價。

$n \leq 10^5$

【題解】

直接最小割能過。。但是樹形dp明顯更好寫

設$f_$表示$x$這個點的子樹中,0表示沒有帶顏色的點連到這個子樹的根$x$,1表示黑點連到$x$,2表示白點連到$x$。

直接轉移即可。具體看**,挺好推得。。

# include # include 

# include

# include

using

namespace

std;

typedef

long

long

ll;typedef unsigned

long

long

ull;

typedef

long

double

ld;const

int n = 1e5 + 10, m = 2e5 + 10

;const ll inf =1e17;

intn, d[n];

int head[n], nxt[m], to[m], w[m], tot = 0

;inline

void add(int u, int v, int

_w)

inline

void adde(int u, int v, int

_w)

ll f[n][3];

//沒有有顏色點連到根上,只有黑點連到根上,只有白點連到根上

inline void dp(int x, int fa = 0

) //

printf("x = %d, f[x][0] = %i64d, f[x][1] = %i64d, f[x][2] = %i64d\n", x, f[x][0], f[x][1], f[x][2]);

}int

main()

int t; cin >>t;

for (int i=1, x; i<=t; ++i)

cin >>t;

for (int i=1, x; i<=t; ++i)

dp(1);

cout

<< min(f[1][0], min(f[1][1], f[1][2

]));

return0;

}/*61 2 5

2 4 4

2 5 1

1 3 2

3 6 714

25 6

*/

view code

雅禮集訓 2017 價

傳送門 乙個不太顯然的最小割做法。我們這麼連邊 源點向藥物連 infty p i 容量的邊,藥物向它對應的藥材連 infty 容量的邊,藥材向匯點連 infty 容量的邊。用源點的流量減去最小割,再負回來就可以求出答案了。怎麼理解呢?割掉一條邊表示不選其對應的藥物或藥材,我們發現最後的方案一定是完美...

雅禮集訓 2017 Day5 珠寶

題目描述 miranda 準備去市裡最有名的珠寶展覽會,展覽會有可以購買珠寶,但可惜的是只能現金支付,miranda 十分糾結究竟要帶多少的現金,假如現金帶多了,就會比較危險,假如帶少了,看到想買的右買不到。展覽中總共有 n種珠寶,每種珠寶都只有乙個,對於第 i種珠寶,它的售價為 ci 萬元,對 m...

6029 雅禮集訓 2017 Day1 市場

6029.雅禮集訓 2017 day1 市場 題目描述 從前有乙個 市場,在一位執政官到來之前都是非常繁榮的,自從他來了之後,發布了一系列奇怪的政令,導致 市場的衰落。有 n nn 個商販,從 0 n 1 0 sim n 10 n 1 編號,每個商販的商品有乙個 ai a ia i 有兩種政令 l,...