HEOI2015 兔子和櫻花

2021-09-27 13:49:11 字數 1060 閱讀 9310

題目傳送門

有一棵樹,裡面有很多點,每個點上有乙個櫻花量 a[i

]a[i]

a[i]

,然後他的兒子數為 son

[i

]son[i]

son[i]

,刪除點以後這個點的櫻花和兒子都會繼承給他的父親,問最多刪除多少點,能滿足刪除的點的父親滿足 a[i

]+so

n[i]

≤m

a[i]+son[i]\leq m

a[i]+s

on[i

]≤m,輸出最多刪除的點數

我們很容易就會想到從下向上來解決本到題,然後我們就貪心的想,我們想刪的點一定是對上面父親的值增加最小的,那麼我們就用乙個新的陣列 key

[i

]key[i]

key[i]

來存 a[i

]+so

n[i]

a[i]+son[i]

a[i]+s

on[i

] ,然後我們對於乙個點來說我們就按照這個從小到大排序一遍,然後看是否能刪,能刪就刪,然後統計答案就可以了/

#include

#include

#include

#include

using

namespace std;

int key[

4000010

],a[

4000010

],sonsum[

4000010];

int l[

4000010

],r[

4000010

],son[

4000010];

int ans=0;

int n,m;

bool

comp

(int x,

int y)

void

dfs(

int now)

return;}

intmain()

dfs(0)

; cout<'\n'

;}

HEOI2015 兔子與櫻花

一棵 n n le2 times10 6 個點的樹,每個點有乙個重量 c i 和乙個載重上限 m 刪除乙個結點時,將自身的重量加到父結點上,並將所有子結點連到父結點上。問若要保證對於任意乙個結點,子結點數與重量之和 le m 時,最多刪去幾個結點。自底向上貪心,子結點按照 c i 排序,能刪除的盡量...

省選專練HEOI2015兔子和櫻花

毒瘤貪心。第一他長得太像貪心了。而且下標位置是0 n 1 我最先tmmmp看樣例以為是乙個仙人掌。貪心,每次選最優的,也就是代價最小的。注意刪去乙個兒子,c i 要相對 1 include include include include includeusing namespace std cons...

HEOI2015 定價 (貪心)

先說一下我對這個題目的態度 首先這一題是貪心,這個十分明顯,看了一眼其他題解都是十分優秀的貪心,可是大家都沒有想過嗎 你們貪心都是在區間 l,r 上列舉的貪心,雖然每一次可以直接加上 10 的階乘,但你們畢竟是用的 int long long 啊!這一題得正解複雜度是 log n 的,不得不說題目的...