開始,蘋果樹CodeForces558A

2022-06-21 15:18:08 字數 768 閱讀 5655

大一公升大二的暑假剛開始接觸acm,完全不知道是怎麼回事,其實乙個暑假都沒有多清晰的認識。

現在已經12月,再回顧之前的題目,抽時間整理。這是接觸acm見的第乙個題,是暑假訓練賽1做的一道題。自己寫的第乙份**。所有都是為自己寫的,方便回顧,因為太渣,所以希望沒有人看。

題目大意:乙個人在一排樹中摘蘋果,人的起點位置為0,每棵樹對應乙個位置(有負有正)和蘋果數,人每摘完一棵樹上的蘋果,方向反轉,直到反方向沒有蘋果。0位置沒有蘋果樹。求最多能摘到多少蘋果。

輸入:樹的棵數,每一行一棵樹的位置和樹上的蘋果個數。

輸出:蘋果個數。

想法:將位置排序,其對應的蘋果個數隨其排列,算出有多少負方向的和正方向的,多的方向能摘到的棵數等於少的方向能摘到的棵數,均從0位置開始。

#includeusing

namespace

std;

intmain()

//輸入

for(int j=0;j1;j++)}}

//根據位置排序,個數隨位置排序

int e=0

;

for(int n=0;n)

//計算負方向有多少顆樹

intf;

f=k-e;//

正方向的

intc;

if(e<=f)

cout

<}

//右邊多,把蘋果個數加起來

else

cout

<}

//左邊多,把蘋果個數加起來

}

二叉蘋果樹

我們可以把保留邊轉換成保留點 因為我個人對保留點熟 跟據樹的性質,乙個點有0or1個根。所以我們可以把邊上的蘋果數轉移到子節點上。根據題意可知這應是一道dp題 廢話 設f i j 為以i為根的樹上保留j個節點的最大權值和,又因為這是個二叉樹,所以我們不妨設左子樹要保留的節點數為k,那麼右子樹的需要保...

樹形揹包 蘋果樹

題目大意 求乙個聯通點集點權和 m leq m m的最大點的個數。這道題是乙個樹形揹包問題,以點的個數為體積,以體積為價值 然後我們只要找到體積 m le m m的最大點數即可。我們設f i j f i j f i j 表示以i ii為根的子樹中,一定選第i ii個點且選了j jj個點的最小花費。若...

樹形dp TT的蘋果樹

在大家的三連助攻下,tt 一舉獲得了超級多的貓咪,因此決定開一間貓咖,將快樂與大家一同分享。並且在開業的那一天,為了紀念這個日子,tt 在貓咖門口種了一棵蘋果樹。一年後,蘋果熟了,到了該摘蘋果的日子了。已知樹上共有 n 個節點,每個節點對應乙個快樂值為 w i 的蘋果,為了可持續發展,tt 要求摘了...