博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ural_1207. Median on the Plane(计算几何)
阅读量:6532 次
发布时间:2019-06-24

本文共 1409 字,大约阅读时间需要 4 分钟。

  /*思路完全搞乱,开始就没想清楚就写。我晕,各种WA。 思路:   找到所有点中最下边一层点里边最靠左的点d。然后求d到其他每个点连线与x轴的 夹角Θ(0 <= Θ <= π 因为d的纵坐标最小)。然后从小到大排序,找到存角度的数组 里n/2号点就是要找的另一个点。*/ My Code: #include 
#include
#include
#include
#include
#define pi 3.1415926535 using namespace std; const int N = 10010; struct point{
double x; double y; }p[N]; struct angle{
double ang; int i; }a[N]; point tmp; bool cmp(angle a, angle b){
return a.ang < b.ang; } int main(){
//freopen("data.in", "r", stdin); int n, i, d, j; double b, c; scanf("%d", &n); scanf("%lf%lf", &p[1].x, &p[1].y); b = p[1].x; c = p[1].y; d = 1; for(i = 2; i <= n; i++){
scanf("%lf%lf", &p[i].x, &p[i].y); if(c > p[i].y){
b = p[i].x; c = p[i].y; d = i; } if(c == p[i].y && b > p[i].x){
b = p[i].x; c = p[i].y; d = i; } } for(j = 1, i = 1; i <= n; i++){
if(i != d){
a[j].i = i; b = p[i].x - p[d].x; c = p[i].y - p[d].y; if(b == 0) {a[j++].ang = pi/2; continue;} if(c == 0) {a[j++].ang = 0; continue;} if(p[i].x < p[d].x) a[j++].ang = pi - atan(c/b); else a[j++].ang = atan(c/b); } } sort(a+1, a+n, cmp); /*for(i = 1; i < n; i++){
printf("%lf %d\n", a[i].ang, a[i].i); }*/ printf("%d %d\n", d, a[n/2].i); return 0; }

转载地址:http://jnqbo.baihongyu.com/

你可能感兴趣的文章
为什么有人讨厌 Google 的新 Logo?
查看>>
2022 年 AI 会发展成什么样子,IBM 做出了 5 大预测
查看>>
Python 修炼2
查看>>
eclipse新版注释文字太小
查看>>
18-python-文件的操作
查看>>
P3387 【模板】缩点 && P3388 【模板】割点(割顶)
查看>>
GPS
查看>>
sudo执行命令时环境变量被重置的解决方法
查看>>
线程同步------1.事件
查看>>
配置Struts2报错:
查看>>
Android UI学习前言:Android UI系统的知识结构
查看>>
众包测试正在改变游戏规则(转)
查看>>
libunistring-0.9.9
查看>>
Pyspider抓取静态页面
查看>>
腾讯2017暑期实习编程题3
查看>>
Javascript---- 练习五(函数,事件绑定)
查看>>
ajax
查看>>
Android中Xposed框架篇-微信实现本地视频发布到朋友圈功能
查看>>
转载:知行合一
查看>>
1.4 管理Activity的生命周期
查看>>