CF競(jìng)賽題目講解_CF1153D(樹(shù)形DP+數(shù)值排名)
2022-09-05 15:56 作者:Clayton_Zhou | 我要投稿
?https://codeforces.com/problemset/problem/1153/D
題意:
n個(gè)節(jié)點(diǎn)以1為根的一棵樹(shù),每個(gè)非葉子節(jié)點(diǎn)都有一個(gè)操作max或shmin(0表示min,1表示max),表示這個(gè)節(jié)點(diǎn)中的值應(yīng)該分別等于其子節(jié)點(diǎn)中所有值的最大值或最小值。假設(shè)樹(shù)上有k個(gè)葉節(jié)點(diǎn),你可以將每個(gè)葉節(jié)點(diǎn)填上[1,k]的數(shù)字,且每個(gè)數(shù)字只使用一次,求根節(jié)點(diǎn)的最大值
題解:
樹(shù)形dp+數(shù)值排名
g[i]代表i節(jié)點(diǎn) 在這個(gè)子樹(shù)的所有葉子節(jié)點(diǎn)中可以取得的最小排名,
則1節(jié)點(diǎn)的答案最大就是 k + 1 - g[1], g[1]為1即最大為k
轉(zhuǎn)移:
當(dāng)前節(jié)點(diǎn)如果操作是1,即max,取最大值,那我們就要選一個(gè)最小的排名來(lái)更新父親節(jié)點(diǎn),所以對(duì)下面的節(jié)點(diǎn)求min;
如果操作是0,即min,取最小值那就保證當(dāng)前節(jié)點(diǎn)排名最靠后,所以就是對(duì)下面所有節(jié)點(diǎn)的排名求sum,就是下面所有節(jié)點(diǎn)的最大排名,即最小值
標(biāo)簽: