時間限制: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: 4case #2: 13
這道題,很不好理解: 剛開始**思路錯了n邊.....
4 4 4 21 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 ...