2015程式設計之美(資格賽) 基站選址

2021-09-08 03:48:57 字數 1748 閱讀 4823

時間限制:2000ms

單點時限:1000ms

記憶體限制:256mb

第一行為乙個整數t,表示資料組數。

每組資料第一行為四個整數:n, m, a, b。

接下來的a+b行每行兩個整數x, y,代表乙個座標,前a行表示各使用者的座標,後b行表示各通訊公司的座標。

對於每組資料輸出一行"case #x: y",x代表資料編號(從1開始),y代表所求最小代價。

1 ≤ t ≤ 20

1 ≤ x ≤ n

1 ≤ y ≤ m

1 ≤ b ≤ 100

小資料1 ≤ n, m ≤ 100

1 ≤ a ≤ 100

大資料1 ≤ n, m ≤ 107

1 ≤ a ≤ 1000

樣例輸入

2

3 3 4 1

1 22 1

2 33 2

2 24 4 4 2

1 22 4

3 14 3

1 41 3

樣例輸出

case #1: 4

case #2: 13

這道題,很不好理解: 剛開始**思路錯了n邊.....

4 4 4 2

1 22 4

3 14 3

1 41 3

可以排除基站的座標為(2,,3) 所以得到的資料歐幾里得的距離為;

1718

void input(point &max_p, point & min_p, vector& aa, const

intnum) ;

21for (int i = 0; i < num; i++) 29}

3031

//求距離的平方

32int dist(const point &aa, const point &bb)

3839

//求距離

40int dist_sqrt(const point &aa, const point &bb)

4647

int work(const point &max_p, const point & min_p, const vector& aa, const vector&bb) ;

55for (int i = 0; i )

59 ttu =inf;

60for (int i = 0; i < bb.size(); i++)

63 res = min(res, temp+ttu);64}

65}66return

res;67}

6869

intmain() , min_p =;

78aa.clear(),bb.clear();

79 scanf("

%d %d %d %d

", &nn, &mm, &aa, &bb);

80input(max_p, min_p, aa, aa);

81input(max_p, min_p, bb, bb);

82int res =work(max_p, min_p, aa, bb);

8384 printf("

case #%d: %d\n

", cnt, res);85}

86//

cin.get();

87return0;

88 }

基站選址(程式設計之美2015資格賽)

時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 第一行為乙個整數t,表示資料組數。每組資料第一行為四個整數 n,m,a,b。接下來的a b行每行兩個整數x,y,代表乙個座標,前a行表示各使用者的座標,後b行表示各通訊公司的座標。對於每組資料輸出一行 case x y x代表資...

2015程式設計之美資格賽 C 基站選址

時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 第一行為乙個整數t,表示資料組數。每組資料第一行為四個整數 n,m,a,b。接下來的a b行每行兩個整數x,y,代表乙個座標,前a行表示各使用者的座標,後b行表示各通訊公司的座標。對於每組資料輸出一行 case x y x代表資...

程式設計之美2015資格賽

時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 給定兩個日期,計算這兩個日期之間有多少個2月29日 包括起始日期 1.年份能被4整除但不能被100整除 2.年份能被400整除 第一行為乙個整數t,表示資料組數。之後每組資料報含兩行。每一行格式為 month day,year ...