Vijos 1012 清帝之惑之雍正
来源:互联网 发布:淘宝个人网店怎么注册 编辑:程序博客网 时间:2024/05/17 07:09
1.暴力
//按x第一关键词,按y第二关键词排,这样当if(a[j].x - a[i].x >= ans)时,后面的j一定不会比已有ans更优秀,疯狂剪枝。#include<bits/stdc++.h>using namespace std;int n;const int maxn = 100010;double ans = 0x7fffffff;struct node{ int x, y;} a[maxn];bool cmp(node p, node q){ if(p.x == q.x) return p.y < q.y; return p.x < q.x;}int main(){ cin >> n; for(int i = 1; i <= n; i++){ cin >> a[i].x >> a[i].y; /*maxx = max(a[i].x, maxx); maxy = max(a[i].y, maxy);*/ } sort(a+1, a+n+1, cmp); for(int i = 1; i <= n; i++) for(int j = i+1; j <= n; j++){ if(a[j].x - a[i].x >= ans) break; double now = sqrt(pow(a[i].x - a[j].x, 2) + pow(a[i].y - a[j].y, 2)); ans = min(now, ans); } printf("%.3lf\n", ans); return 0;}
2.分治
//切记sqrt()中要加(double)!!!!! //3 1113333 223332 33333333 333333 23 23#include<bits/stdc++.h>using namespace std;int n;const int maxn = 100010;const int inf = 0x3f3f3f3f;struct node{ int x, y;} a[maxn], t[maxn];bool cmp(node p, node q){ if(p.x != q.x) return p.x < q.x; return p.y < q.y;}bool cmpy(node p, node q){ return p.y < q.y;}double dis(node p, node q){ return sqrt((double)(p.x - q.x)*(p.x - q.x) + (double)(p.y - q.y)*(p.y - q.y));}double changsort(int x, int y){ double ans = 0x3fffffff; if(y - x == 1) return inf; if(y - x == 2) return dis(a[x], a[x+1]); int m = x + (y-x)/2; double d1 = changsort(x, m); double d2 = changsort(m, y); ans = min(d1, d2); int cnt = 0; for(int i = x; i <= m; i++) if(fabs(a[i].x - a[m].x) < ans){ t[++cnt].x = a[i].x; t[cnt].y = a[i].y; } sort(t+1, t+cnt+1, cmpy); for(int i = 1; i <= cnt; i++) for(int j = i+1; j <= cnt && abs(t[i].y - t[j].y) < ans; j++){ double d3 = dis(t[i], t[j]); ans = min(ans, d3); } return ans;}int main(){ cin >> n; for(int i = 1; i <= n; i++){ cin >> a[i].x >> a[i].y; /*maxx = max(a[i].x, maxx); maxy = max(a[i].y, maxy);*/ } sort(a+1, a+n+1, cmp); printf("%.3lf\n", changsort(1, n+1)); return 0;}
0 0
- Vijos 1012 清帝之惑之雍正
- Vijos P1012 清帝之惑之雍正
- 【枚举】Vijos P1012 清帝之惑之雍正
- Vijos P1012 清帝之惑之雍正
- vijos P1009 清帝之惑之康熙
- vijos P1009清帝之惑之康熙
- 【vijos P1010】清帝之惑之乾隆 c++题解
- 【扩展欧几里德】Vijos P1009 清帝之惑之康熙
- 【高精度】Vijos P1010 清帝之惑之乾隆
- 【动态规划】Vijos P1011 清帝之惑之顺治
- Vijos P1011 清帝之惑之顺治
- Vijos P1009 清帝之惑之康熙
- Vijos P1010 清帝之惑之乾隆
- VIJOS-P1011 清帝之惑之顺治 dfs
- vijos之清帝之惑四题
- vijos 1011 清帝之惑之顺治 (记忆化搜索)
- VIJOS-P1011清帝之惑之顺治<滑雪> 【区间DP--相邻位】
- [Vijos1009] 清帝之惑之康熙
- 面向对象高级特性
- 浅谈前端集成解决方案
- 界面手势滑动工具类
- poj 1414 dfs 搜索
- python爬取豆瓣电影Top250
- Vijos 1012 清帝之惑之雍正
- 多线程辅助类之数组(二)
- Linux下iscsi的配置与使用
- 数据库的帮助类以及DAO层代码
- navicat连接linux系统中mysql-错误:10038
- oracle条件不等于字符bug
- Coframe及NUI的样式在哪里改
- Linux CentOS上安装memcached及memcache
- 打电话Demo及Android6.0的运行时权限问题