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號節點是根節點。這個樹的每個節點上都...