YTU 3282 嚮往的氣球

2021-08-31 11:39:24 字數 1480 閱讀 1939

時間限制: 1 sec  記憶體限制: 128 mb

提交: 172  解決: 41

[提交][狀態][討論版][命題人:acm4302]

一年一度的計控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

分析:並查集,引入乙個變數p來簡化題目

ac**:

#includeusing namespace std;

#define maxn 10005

typedef structzb;

zb a[maxn];

int f[maxn];

bool cmp1(zb a,zb b)

sort(a,a+n,cmp1);

for(int i=1;i之前一次做的**,感覺繁瑣了許多:

/*沒考慮好資料範圍,這兩句**坑死我啊....

#define maxx 10010

zb f[maxx][maxx]=;

*/#include#include#include#includeusing namespace std;

typedef struct zb;

zb a[10000];

zb f[1001][1001];

zb findx(zb x)

void merge(zb x,zb y)

else

}int cmp1(zb a,zb b)

sort(a,a+n,cmp1);

for(int i=0; i

sort(a,a+n,cmp2);

for(int i=0; i

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

}cout<

}return 0;

}

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...

YTU OJ 3282 嚮往的氣球

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

HDU 3282 優先佇列的使用

題意 按照順序給你n個數,當數的數量是奇數的時候就輸出它們的中位數 題解 優先佇列預設是大頂堆,即priority queue.top 是這個佇列中的最大值 那麼我們就可以先創造乙個大頂堆優先佇列qmax,和乙個小頂堆qmin qmin裡面放的是大於等於中位數的數,qmax裡面放的是比中位數小的數 ...