BZOJ4027 HEOI2015 兔子與櫻花

2021-08-02 16:04:19 字數 1136 閱讀 7324

bzoj4027

一開始想的都是二維的dp

。。資料這麼大怎麼轉移啊qa

q 。

後來發現原來貪心就行辣。。。

直接記ans

i=so

ni+c

i ,那麼將這個點刪除對應著其父節點+=

ansi

−1那麼對於某個點

x ,將兒子的an

s值從小到大排徐,然後依次刪直到不能刪為止。

然後刪下面的比刪上面的優。

因為刪某個點

x 的兒子節點,有影響的只是當前點

x,最多隻會造成當前點無法刪掉。但是兒子節點中至少刪乙個,所以不虧。為什麼對其他點沒有影響呢? 考慮x

的兄弟節點xx

,因為ans

x 變大導致

x 無法刪除,只會使兄弟節點被刪除的更多。 考慮x

的父節點fa

x ,如果an

sx的增大僅僅造成了少刪

x 乙個,那麼an

sfax

相較會變小,也就是不會加上an

sx−1

,所以被刪除的機會會更大。

另外如果an

sx增大使得兄弟節點中有至少乙個被多刪除掉。就算使得an

sfax

相較變大而導致無法刪掉,也是不虧的。

所以就可以開開心心的貪心辣!

#include 

#include

#include

#include

#define n 2000005

using

namespace

std;

typedef

long

long ll;

ll read()

while(isdigit(ch))

return x*f;

}int n,m,ans;

int c[n],sz[n];

vector

g[n];

bool cmp(int x,int y)

}int main()

dfs(1);

printf("%d\n",ans);

return

0;}

bzoj4027 heoi2015 兔子與櫻花

time limit 10 sec memory limit 256 mb submit 360 solved 187 submit status discuss 很久很久之前,森林裡住著一群兔子。有一天,兔子們突然決定要去看櫻花。兔子們所在森林裡的櫻花樹很特殊。櫻花樹由n個樹枝分叉點組成,編號從0...

bzoj4027 HEOI2015 兔子與櫻花

submit status discuss description 很久很久之前,森林裡住著一群兔子。有一天,兔子們突然決定要去看櫻花。兔子們所在森林裡的櫻花樹很特殊。櫻花樹由n個樹枝分叉點組成,編號從0到n 1,這n個分叉點由n 1個樹枝連線,我們可以把它看成乙個有根樹結構,其中0號節點是根節點。...

BZOJ4027 HEOI2015 兔子與櫻花

bzoj4027 heoi2015 兔子與櫻花 很久很久之前,森林裡住著一群兔子。有一天,兔子們突然決定要去看櫻花。兔子們所在森林裡的櫻花樹很特殊。櫻花樹由n個樹枝分叉點組成,編號從0到n 1,這n個分叉點由n 1個樹枝連線,我們可以把它看成乙個有根樹結構,其中0號節點是根節點。這個樹的每個節點上都...