CSP模擬賽 Repulsed(樹形DP)

2021-09-29 01:10:37 字數 1233 閱讀 2233

⼩ w ⼼⾥的⽕焰就要被熄滅了。 簡便起⻅,假設⼩ w 的內⼼是⼀棵 n − 1 條邊,n 個節點的樹。 現在你要在每個節點⾥放⼀些個滅⽕器,每個節點可以放任意多個。 接下來每個節點都要被分配給⼀個⾄多 k 條邊遠的滅⽕器,每個滅⽕器最多能分配給 s 個節 點。 ⾄少要多少個滅⽕器才能讓⼩ w 徹底死⼼呢?

樹形dp,由於k≤20

k\le 20

k≤20

,用f [i

][j]

f[i][j]

f[i][j

]存ii

i這個點下面距離為j

jj的未匹配點有多少個,g[i

][j]

g[i][j]

g[i][j

]存ii

i下面能夠再往上拓展j

jj長度的滅火器分配數量(乙個滅火器提供s

ss的數量)。那麼根據貪心,肯定是f[i

][k]

f[i][k]

f[i][k

]必須在i

ii處放滅火器,然後剩下的能配就配,因為如果可以,在下面配顯然更優。

時間複雜度o(n

k)

o(nk)

o(nk)。

#include

using

namespace std;

inline

voidrd(

int&x)

const

int maxn =

100005

;const

int maxk =25;

int n, s, k, ans;

int fir[maxn]

, to[maxn<<1]

, nxt[maxn<<1]

, cnt;

inline

void

link

(int u,

int v)

int f[maxn]

[maxk]

, g[maxn]

[maxk]

;void

dfs(

int u,

int ff)

++f[u][0

];if(f[u]

[k])

int tmp, cur = k;

for(

int i = k; i >=0;

--i)}}

int main (

)

CSP模擬賽 Repulsed(樹形DP)

w 的 焰就要被熄滅了。簡便起 假設 w 的內 是 棵 n 1 條邊,n 個節點的樹。現在你要在每個節點 放 些個滅 器,每個節點可以放任意多個。接下來每個節點都要被分配給 個 多 k 條邊遠的滅 器,每個滅 器最多能分配給 s 個節 點。少要多少個滅 器才能讓 w 徹底死 呢?樹形dp,由於k 2...

CSP模擬賽 方程(數學)

題目描述 求關於x的方程 x1 x2 xk n的非負整數解的個數。輸入格式 僅一行,包含兩個正整數n,k。輸出格式 乙個整數,表示方程不同解的個數,這個數可能很大,你只需輸出mod 20080814 的結果。輸入樣例 1 1輸出樣例1提示 資料範圍 對於50 的資料,n,k 300 對於80 的資料...

CSP模擬賽 方程(數學)

求關於x的方程 x1 x2 xk n的非負整數解的個數。僅一行,包含兩個正整數n,k。乙個整數,表示方程不同解的個數,這個數可能很大,你只需輸出mod 20080814 的結果。1 11 提示資料範圍 對於50 的資料,n,k 300 對於80 的資料,n,k 1000 對於100 的資料,n,k ...