洛谷 P2170 選學霸

2021-09-22 21:31:30 字數 1362 閱讀 6335

傳送門

在n

nn個人中,有k

kk對關係,要求選出m

mm位學霸,且要保證所有關係相通的人都會一齊被選上

求滿足上述條件的情況下,最接近m

mm的方案是選多少位學霸

因為題目要求我們將所有關係相通的人繫結在一起,所以我們考慮用並查集實現連通塊的判定

這就實現了將關係省去,在所有連通塊中選,我們可以看作是個01

0101

揹包

#include

#include

#include

#include

#include

#define ll long long

#define lzx 1000003

using namespace std;

inline ll read()

while

(s>=

'0'&&s<=

'9')

return d*f;

}int w[

100000

],p[

100000

],t=0;

int f[

100000

],num[

100000];

intfind

(int i)

int n=

read()

,m=read()

,k=read()

;int

main()

for(

int i=

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

(f[i]

==i)

p[++t]

=num[i]

;for

(int i=

1;i<=t;i++

)for

(int j=

2*m;j>=p[i]

;j--

) w[j]

=max

(w[j]

,w[j-p[i]

]+p[i]);

int minn=

99999999

,ans=

99999999

;for

(int i=

1;i<=

2*m;i++)if

(minn>

abs(w[i]

-m)) minn=

abs(w[i]

-m),ans=w[i];if

(ans!=

99999999

) cout

printf

("0");

return0;

}

洛谷P2170 選學霸 並查集,揹包

題目描述 老師想從n名學生中選m人當學霸,但有k對人實力相當,如果實力相當的人中,一部分被選上,另一部分沒有,同學們就會 所以老師想請你幫他求出他該選多少學霸,才能既不讓同學們 又與原來的m盡可能接近 輸入輸出格式 輸入格式 第一行,三個正整數n,m,k。第2 k行,每行2個數,表示一對實力相當的人...

洛谷 選學霸 並查集 揹包

題解 本題主要考查並查集 揹包變形 簡要題意 從n nn名學生中選m mm人當學霸,但有k kk對人實力相當。如果實力相當的人中,一部分被選上,另一部分沒有,同學們就會 求選出多少學霸合理,又與原來的m mm盡可能接近。1.並查集 揹包 巧妙的一題揹包,有k kk對人實力相當,那麼我們把實力相當的人...

洛谷P5049 洛谷P5022 題解 旅行

原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...