P3155 CQOI2009 葉子的染色

2022-05-24 07:03:11 字數 809 閱讀 1476

能自己寫出來一篇**並且ac,感覺真不錯……

其實我覺得都不用怎麼解釋了……

給出定義:f [ x ] [ y ] 表示把節點 x 染色為 y ,在以 x 為根的子樹裡最少需要染的點的數量。

注意一下轉移方程,不明白的自己畫個圖推一推,推不出來的再看看定義,在這裡就不解釋了。(實在不明白一號機位歡迎你)

這道題我第三次才過……

第一次re了,因為點的數量和邊的數量是不一樣的,一定要注意。

第二次是tle,因為滴bug的時候,只刪掉了輸出部分,上面的迴圈忘刪了(emmm),所以我的dfs跑了 m - 1 遍……不t才怪呢qwq。

又想起了ssy曾經和我說的話,題解可以看,但是絕不能抄,那就是欺騙自己。

最後附上**:

#include#include

using

namespace

std;

#define maxn 20010

#define inf 1e9

int head[maxn],nxt[maxn],to[maxn],out[maxn],f[maxn][3],c[5030

];int

m,n,cnt;

void add(int a,int

b)void dfs(int v,int

fa) f[v][

1]=f[v][0]=1

;

for(int i=head[v];i;i=nxt[i])

}void

deal_first()

}int

main()

P3155 CQOI2009 葉子的染色

題目描述 給一棵m個結點的無根樹,你可以選擇乙個度數大於1的結點作為根,然後給一些結點 根 內部結點和葉子均可 著以黑色或白色。你的著色方案應該保證根結點到每個葉子的簡單路徑上都至少包含乙個有色結點 哪怕是這個葉子本身 對於每個葉結點u,定義c u 為從根結點從u的簡單路徑上最後乙個有色結點的顏色。...

CQOI2009 葉子的染色

首先,選擇任意乙個度數大於 1 的節點為根的最優的答案都是固定的,具體證明這裡不加贅述。我們仔細研究,他只要求根節點到葉子節點的最後乙個有色節點的顏色。我們對第 x 號節點染色,意味著我們把所有它子樹中的葉子節點最近的乙個有色節點的顏色就發生了改變。顯然,兒子越多的節點價效比越高。因此,我們定義 d...

1304 CQOI2009 葉子的染色

原博主部落格 time limit 10 sec memory limit 162 mb description 給一棵m個結點的無根樹,你可以選擇乙個度數大於1的結點作為根,然後給一些結點 根 內部結點和葉子均可 著以黑色或白色。你的著色方案應該保證根結點到每個葉子的簡單路徑上都至少包含乙個有色結...