TYVJ 1081 最近距离 解题报告
怎么讲。。纯水题吧,随便搜一下就可以了。
不过搜法也有很多,我第一次写的是直接求距离,因为要开平方,又是O(n^2)的复杂度,所以没超时。但是最后一个数据293ms,有点危险,看了下题解,有好方法,直接使用x^2+y^2,不开平方,毕竟就是比较距离嘛!
写出来的那个代码全部WA了,不知道怎么回事,好困了,明天继续写。——2011年7月6日 22:53:12
也不知道怎么回事,重写一次就直接AC。 有点无语的说,上代码:
#include <stdio.h> #include <stdlib.h> struct dot{ int x, y; }dot[2000]; double getdis(int a, int b) { return (((double)dot[a].x) - dot[b].x) * (((double)dot[a].x) - dot[b].x) + (((double)dot[a].y) - dot[b].y) * (((double)dot[a].y) - dot[b].y); } double ans = 20000000000.0, t; int x, y; int main(int argc, char **argv) { int i, j; int n; scanf("%d", &n); for(i = 0; i < n; i++){ scanf("%d%d", &dot[i].x, &dot[i].y); } for(i = 0; i < n; i++){ for(j = 0; j < n; j++){ if(i == j){ continue; } t = getdis(i, j); if(ans > t){ ans = t; if(i > j){ x = j, y = i; }else{ x = i, y = j; } } } } printf("%d %d\n", x + 1, y + 1); return 0; }