1854 Scoi2010 遊戲 並查集

2022-05-03 08:15:06 字數 1831 閱讀 4685

time limit: 5 sec  memory limit: 162 mb

submit: 4938  solved: 1948

[submit][status][discuss]

lxhgww最近迷上了一款遊戲,在遊戲裡,他擁有很多的裝備,每種裝備都有2個屬性,這些屬性的值用[1,10000]之間的數表示。當他使用某種裝備時,他只能使用該裝備的某乙個屬性。並且每種裝備最多只能使用一次。 遊戲進行到最後,lxhgww遇到了終極boss,這個終極boss很奇怪,攻擊他的裝備所使用的屬性值必須從1開始連續遞增地攻擊,才能對boss產生傷害。也就是說一開始的時候,lxhgww只能使用某個屬性值為1的裝備攻擊boss,然後只能使用某個屬性值為2的裝備攻擊boss,然後只能使用某個屬性值為3的裝備攻擊boss……以此類推。 現在lxhgww想知道他最多能連續攻擊boss多少次?

輸入的第一行是乙個整數n,表示lxhgww擁有n種裝備 接下來n行,是對這n種裝備的描述,每行2個數字,表示第i種裝備的2個屬性值

輸出一行,包括1個數字,表示lxhgww最多能連續攻擊的次數。

31 2

3 24 5

2【資料範圍】

對於30%的資料,保證n < =1000

對於100%的資料,保證n < =1000000

day1

/*

將每個裝備看做一條邊,將裝備的屬性看做點。將每個裝備的兩個屬性連線成乙個集合,依次連成一條鏈。

最後用並查集處理找出根最大的鏈,輸出。。。

注意每次並查集合並時要把屬性大的作為根。

*/#include

#include

#define set(x) freopen(#x".in","r",stdin);freopen(#x".out","w",stdout);

using

namespace

std;

const

int n=1e4+5

;int n,fa[n];bool

vis[n];

inline

intread()

while(ch>='

0'&&ch<='9')

return x*f;

}int find(int

x)int

main()

for(int i=1;i<=10000;i++)

}puts(

"10000");

return0;

}/*orz zjk

亂搞100分:

b為第一優先

a,num[b]為第二優先

#include#include#define set(x) freopen(#x".in","r",stdin);freopen(#x".out","w",stdout);

using namespace std;

const int n=1e6+5;

int n,f,a[n],b[n],num[n];bool vis[n];

inline int read()

while(ch>='0'&&ch<='9')

return x*f;

}int main()

for(int i=1,pos;i<=10000;i++)

}if(pos)

pos=0;

for(int j=1;j<=n;j++)

}if(pos)

else

}if(!f) puts("10000");

return 0;}/*

in:6

1 32 4

3 44 5

4 65 6

out:

6*/

BZOJ 1854 遊戲(並查集)

time limit 5 sec memory limit 162 mb submit 5258 solved 2098 submit status discuss lxhgww最近迷上了一款遊戲,在遊戲裡,他擁有很多的裝備,每種裝備都有2個屬性,這些屬性的值用 1,10000 之間的數表示。當他使...

SCOI2010 連續攻擊遊戲

原題鏈結 抱歉有點事要忙只能引用了 這道題正解是用二分圖,但是做完這道題的第二題才講 所以我採用的我當時會的做法 並查集。我們每有乙個 a,b 時我們可以把它當做一條邊 a,b 然後對於構圖之後,乙個大小為k聯通塊,我們發現有如下性質 如果這個聯通塊沒有環 樹 因為有k 1條邊,那麼總有方法使其中的...

SCOI2010 連續攻擊遊戲

題目 description lxhgww最近迷上了一款遊戲,在遊戲裡,他擁有很多的裝備,每種裝備都有2個屬性,這些屬性的值用 1,10000 之間的數表示。當他使用某種裝備時,他只能使用該裝備的某乙個屬性。並且每種裝備最多只能使用一次。遊戲進行到最後,lxhgww遇到了終極boss,這個終極bos...