⼩ w ⼼⾥的⽕焰就要被熄滅了。 簡便起⻅,假設⼩ w 的內⼼是⼀棵 n − 1 條邊,n 個節點的樹。 現在你要在每個節點⾥放⼀些個滅⽕器,每個節點可以放任意多個。 接下來每個節點都要被分配給⼀個⾄多 k 條邊遠的滅⽕器,每個滅⽕器最多能分配給 s 個節 點。 ⾄少要多少個滅⽕器才能讓⼩ w 徹底死⼼呢?
樹形dp,由於k≤20
k≤20
,用f[i]
[j]f
[i][
j]存ii
這個點下面距離為j
j的未匹配點有多少個,g[i
][j]
g[i]
[j]存i
i下面能夠再往上拓展j
j長度的滅火器分配數量(乙個滅火器提供s
s的數量)。那麼根據貪心,肯定是f[i
][k]
f[i]
[k]必須在i
i處放滅火器,然後剩下的能配就配,因為如果可以,在下面配顯然更優。
時間複雜度o(n
k)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 ...