時間限制: 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
對於每一組資料,你需要輸出一行
輸出最少需要的志願者數量
23 51 1
10 6
15 20
2 51 1
7 7
1分析:並查集,引入乙個變數p來簡化題目2
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裡面放的是比中位數小的數 ...