JZOJ7月22日提高組T1 三色樹

2021-10-08 10:15:12 字數 2856 閱讀 3614

題解給出乙個n個節點的無根樹,每條邊有非負邊權,每個節點有三種顏色:黑,白,灰。

乙個合法的無根樹滿足:樹中不含有黑色結點或者含有至多乙個白色節點。

現在希望你通過割掉幾條樹邊,使得形成的若干樹合法,並最小化割去樹邊權值的和。

第一行乙個正整數n,表示樹的節點個數。

第二行n個整數ai,表示i號節點的顏色,0 表示黑色,1表示白色,2表示灰色。

接下來n-1行每行三個整數xi yi zi,表示一條連線xi和yi權為zi的邊。

輸出乙個整數表示其最小代價。

50 1 1 1 0

1 2 5

1 3 3

5 2 5

2 4 16

10樣例解釋:

花費10的代價刪去邊(1, 2)和邊(2, 5)。

20%的資料滿足n≤10。

另外30%的資料滿足n≤100,000,且保證樹是一條鏈。

100%的資料滿足n≤300,000,0≤zi≤1,000,000,000,ai∈。

n

nn個節點,顏色為0\1\2

對於乙個合法樹,要求沒有顏色0或最多乙個顏色1

求出滿足最大合法森林需要刪去邊的最小代價

由於每個節點只有三種顏色,狀態簡單,很容易想到用樹形dp來做這道題。

上面這句話是cjz巨佬所述 (但我這種蒟蒻就想不到樹形dp)

設f [i

][0]

f[i][0]

f[i][0

]表示以節點i

ii為根的子樹中不含黑色節點的最小代價

設f [i

][1]

f[i][1]

f[i][1

]表示以節點i

ii為根的子樹中不含白色節點的最小代價

設f [i

][2]

f[i][2]

f[i][2

]表示以節點i

ii為根的子樹中只含乙個白色節點的最小代價

先行告知:son

sonso

n表示i

ii的兒子,v

vv表示i

ii和son

sonso

n連線的那條邊的權值,a[i

]a[i]

a[i]

表示節點i

ii的顏色,inf

infin

f正無窮

f [i

][0]

f[i][0]

f[i][0

]轉移:

f [i

][0]

=(a[i]=0)inf\\(a[i]≠0)∑_min\beginf[son][0]\\v+min\beginf[son][1]\\f[son][2]\end\end \end

f[i][0

]=⎩⎪

⎪⎪⎨⎪

⎪⎪⎧​

(a[i

]=0)

inf(

a[i]

​=0

)∑so

n​mi

n⎩⎪⎨

⎪⎧​f

[son

][0]

v+mi

n(a[i]=1)inf\\(a[i]≠1)∑_min\beginf[son][1]\\v+min\beginf[son][0]\\f[son][2]\end\end \end

f[i][1

]=⎩⎪

⎪⎪⎨⎪

⎪⎪⎧​

(a[i

]=1)

inf(

a[i]

​=1

)∑so

n​mi

n⎩⎪⎨

⎪⎧​f

[son

][1]

v+mi

n(a[i]=1)∑_min\beginf[son][1]\\v+min\beginf[son][0]\\f[son][2]\end\end\\(a[i]≠1)f[i][1]-max(min\beginf[son][1]\\v+min\beginf[son][0]\\f[son][2]\end\end-f[son][2]) \end

f[i][2

]=⎩⎪

⎪⎪⎪⎪

⎪⎪⎪⎨

⎪⎪⎪⎪

⎪⎪⎪⎪

⎧​(a

[i]=

1)∑s

on​m

in⎩⎪

⎨⎪⎧​

f[so

n][1

]v+m

in{f

[son

][0]

f[so

n][2

]​​(

a[i]

​=1

)f[i

][1]

−max

(min

⎩⎪⎨⎪

⎧​f[

son]

[1]v

+min

{f[s

on][

0]f[

son]

[2]​

​−f[

son]

[2])

​不要看錯

解釋:當當前節點的顏色是白色時

那麼它的兒子不能選白色

跟f [i

][1]

f[i][1]

f[i][1

]一樣當當前節點不是白色

那麼就可以讓某個兒子節點的要求放寬一點

求出放寬要求後減少哪些代價

再用沒有白色節點的f[i

][1]

f[i][1]

f[i][1

]減去最大減少代價

結合**理解

code

JZOJ7月16日提高組T1 質數

題解定義質數為因數只含1和其本身的數,對於n組詢問,試判斷每個數是否為素數。第一行乙個正整數n,表示有n組詢問。接下來n行,每行乙個正整數m,表示詢問m是否為質數。輸出n行,每行乙個字串。若是質數則輸出 prime 若不是質數則輸出 not prime 52 1089807289 903248294...

JZOJ7月23日提高組T1 同餘

題解有一同餘方程 滿足p pp是質數,xi,jx xi,j 在0 p pp之間 問滿足同餘方程的方案數模乙個給出的數後的結果 手模資料或者打表可以發現,當c 0 c 0c 0時,所有答案都是一樣的 那麼就可以分成c 0 c 0c 0和c 0c 0 c 0兩種情況討論 轉移一下就好了 include ...

JZOJ7月25日提高組T1 挑竹籤

挑竹籤 小時候的遊戲 夏夜,早苗和諏訪子在月光下玩起了挑竹籤這一經典的遊戲。挑竹籤,就是在桌上擺上一把竹籤,每次從最上層挑走一根竹籤。如果動了其他的竹籤,就要換對手來挑。在所有的竹籤都被挑走之後,誰挑走的竹籤總數多,誰就勝了。身為神明的諏訪子自然會讓早苗先手。為了獲勝,早苗現在的問題是,在諏訪子出手...