YTU OJ 3282 嚮往的氣球

2021-08-28 07:25:42 字數 1169 閱讀 4235

一年一度的計控acm院賽即將來臨。除了acmers以外,志願者們也非常的忙碌。他們需要將各種顏色的氣球分配給a掉相應題目的隊伍。現在,所有比賽隊伍的成員都處在乙個房間中,這個房間是乙個二維座標系,大小為1000行x1000列。

每乙個座標對應著空座位或某個參賽隊伍。每一分鐘,志願者們都應該把所有的氣球聚集在一起。志願者將會被告知把氣球送到**。為了保證工作的效率,對於兩個座標(x1,y1)和(x2,y2),如果|x1-x2|不大於k 或者 |y1-y2|不大於k,則這兩個座標的氣球由同乙個志願者配送。你能知道最少需要多少志願者,才能配送完所有的氣球嗎?

第一行包含乙個整數t,表示有t組資料。

對於每一組陣列,這裡將有n+1行

第一行:輸入兩個整數n,k; n表示氣球的數量,k表示題目中的k值

接下來的n行中,每一行包含兩個整數r,c。表示氣球應該被送往r行,c列。請注意座標可能會相同。

題目中保證:t<=100,1<=n<=10000,1<=k,r,c<=1000

對於每一組資料,你需要輸出一行

輸出最少需要的志願者數量

2

3 51 1

10 6

15 20

2 51 1

7 7

1

2

題目要算最少需要幾個志願者,最直接的想法把滿足條件的幾個區域都歸乙個志願者; 實在滿足不了的就只能再找另乙個志願者++;

所以就要解決兩個問題

1.如何把滿足條件的座標都合併在一起;

2.如果座標都合併在一起了,如何查詢座標是不是乙個集合裡的呢?

-->>-->>並查集唄。。。。。

#include#include#include#include#includeusing namespace std;

struct p

p[10010];

p parent[1010][1010];

bool cmp1(p a, p b)

sort(p,p+n,cmp1);

for(int i=0; i

}sort(p,p+n,cmp2);

for(int i=0;i

}int a=0;

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

}cout<

}return 0;

}

YTUOJ 眾數問題

給定含有n個元素的多重集合s,每個元素在s中出現的次數稱為該元素的重數。多重集s中重數最大的元素稱為眾數。例如,s 多重集s的眾數是2,其重數為3。對於給定的由n 個自然數組成的多重集s,計算s的眾數及其重數。輸入資料的第1行是多重集s中元素個數n n 1300000 接下來的n行中,每行有乙個最多...

Ytu oj 折半查詢

有n個數 n 1000000 這n個數已按從大到小順序存放在乙個陣列中,然後有t次查詢,每次輸入乙個數,要求用折半查詢法找出該數在陣列中第一次出現的位置。如果不在陣列中輸出0。第一行陣列元素的個數n 第二行n個陣列元素的值 第三行輸入查詢次數t t 100000 往下有t行,每行輸入乙個需要查詢的數...

bzoj3282 tree 解題報告

這題是個lct裸題,但是我down的時候down到了root。導致跪了,調了兩天。include include using namespace std include include const int n 3e5 5,m 3e5 5 struct lslct n void out int nod...