TYVJ 1081 最近距离 解题报告
2011-07-06 22:54
337 查看
怎么讲。。纯水题吧,随便搜一下就可以了。
不过搜法也有很多,我第一次写的是直接求距离,因为要开平方,又是O(n^2)的复杂度,所以没超时。但是最后一个数据293ms,有点危险,看了下题解,有好方法,直接使用x^2+y^2,不开平方,毕竟就是比较距离嘛!
写出来的那个代码全部WA了,不知道怎么回事,好困了,明天继续写。——2011年7月6日 22:53:12
也不知道怎么回事,重写一次就直接AC。 有点无语的说,上代码:
不过搜法也有很多,我第一次写的是直接求距离,因为要开平方,又是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; }
相关文章推荐
- Tyvj 1081 最近距离
- tyvj 1081 最近距离 平面最近点对
- tyvj 衡水中学60周年赛 解题报告
- 01距离 解题报告
- TYVJ 1058 作业调度方案 完整版 解题报告
- HDU 2001 计算两点间的距离 解题报告
- TYVJ 1085 派对 解题报告
- TYVJ 1087 sumsets 解题报告
- TYVJ 1067 合唱队形 解题报告
- TYVJ 1059 过河 解题报告
- TYVJ 1083 分糖果 解题报告
- TYVJ 1106 登山 解题报告
- TYVJ 1116 被7整除 解题报告
- POJ3356解题报告(最小编辑距离)
- [Tyvj1728]普通平衡树 解题报告
- 【原】 POJ 1035 Spell checker 编辑距离 解题报告
- timus 1588. Jamaica URAL 解题报告 平面点距离和
- 动态规划求编辑距离——算法解题报告
- cojs 简单的最近公共祖先 解题报告
- 洛谷 1429 平面最近点对 贪心? 解题报告