1387 搭配購買 buy

2021-09-28 18:46:29 字數 1074 閱讀 2243

【題目描述】

joe覺得雲朵很美,決定去山上的商店買一些雲朵。商店裡有n朵雲,雲朵被編號為1,2,……,n,並且每朵雲都有乙個價值。但是商店老闆跟他說,一些雲朵要搭配來買才好,所以買一朵雲則與這朵雲有搭配的雲都要買。

但是joe的錢有限,所以他希望買的價值越多越好。

【輸入】

第1行n,m,w,表示n朵雲,m個搭配,joe有w的錢。

第2~n+1行,每行ci,di表示i朵雲的價錢和價值。

第n+2~n+1+m行,每行ui,vi,表示買ui就必須買vi,同理,如果買vi就必須買ui。

【輸出】

一行,表示可以獲得的最大價值。

【輸入樣例】

5 3 10

3 10

3 10

3 10

5 100

10 1

1 33 2

4 2【輸出樣例】

1【提示】

【資料範圍】

30%的資料保證:n≤100

50%的資料保證:n≤1,000;m≤100;w≤1,000

100%的資料保證:n≤10,000;0≤m≤5000;w≤10,000

【**】

#include

#include

#include

#include

#include

const

int maxn =

1e4+5;

using

namespace std;

int p[maxn]

,price[maxn]

,value[maxn]

,dp[maxn]

;int

findf

(int k)

void

union

(int a,

int b)

}int

main()

while

(m--

)for

(int i=

1;i<=n;i++)}

} cout

}

T1387 搭配購買 buy

joe覺得雲朵很美,決定去山上的商店買一些雲朵。商店裡有n朵雲,雲朵被編號為1,2,n,並且每朵雲都有乙個價值。但是商店老闆跟他說,一些雲朵要搭配來買才好,所以買一朵雲則與這朵雲有搭配的雲都要買。但是joe的錢有限,所以他希望買的價值越多越好。第1行n,m,w,表示n朵雲,m個搭配,joe有w的錢。...

SSL ZYC 2347 搭配購買

題目大意 現在有n件商品,其中m組買了乙個就必須買另外乙個。求k元錢的最大價值。思路 如果沒有第二句話就是乙個普通的01揹包。既然這樣,那這道題是否可以轉換為01揹包呢?答案很明顯是可以的。可以利用並查集,將這m組配對購買的商品劃到乙個集合裡,這樣就可以確定買了其中乙個就得買另乙個。最後就是01揹包...

洛谷 P1455 搭配購買

給定n件物品 容量為sum的揹包,購買一件物品需要購買它所依賴 的物品,求最大價值 1 並查集 2 tarjan縮點 本文採取第二種方法 將乙個強連通塊縮成乙個點,費用和價值累加,最後揹包dp即可 邊集 原圖 edge i 乙個點是否在棧內 instack i 1或0 新圖 bcc cnt 新節點費...