UESTC 1170 红与蓝 计算几何、贪心、红蓝点对

D - EN TARO Artanis

Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld
& %llu

Submit Status Practice UESTC
1170

Description

平面上有N个红点和N个蓝点,求红点到蓝点的最近距离

Input

第一行为一个整数N 

接下来第N行每行两个整数xi,yi,表示第i个红点的坐标

接下来第N行每行两个整数xi,yi,表示第i个蓝点的坐标(1
                                  )

Output

红点到蓝点的最短距离

Sample Input

4

0 0

0 1

1 0

1 1

2 2

2 3

3 2

3 3

Sample Output

1.414

Hint

Source

UESTC 2016 Summer Training #16 Div.2

UESTC 1170

Source

贪心的做法

预处理所有Ai到O的距离, 然后根据距离排序,

之后依次对每个Bi也求出BiO, 然后二分查找, 然后处理最近的+-100个点, 答案必定在这100或者1000个点之内

比赛的时候是+-100 共200个点Accepted的

然后比赛结束后试了一下, 我这样的方法至少要+-40 共80个点才能通过那个题目的数据测试

好像还有专业计算几何的算法 红蓝点对 ??

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long LL;
const int maxn = 1e5 + 8;

struct p{
    int x, y;
    double dist;
} val[maxn];

inline bool cmp(const p& a, const p& b)
{
    return a.dist < b.dist;
}

int main()
{
    #ifdef LOCAL
    freopen("a.txt", "r", stdin);
    //freopen("b.txt", "w", stdout);
    int T = 2;
    while(T--){
    #endif // LOCAL

    int n, x, y, a, b;
    double dist, ans = maxn;
    scanf("%d", &n);
    for(int i = 0; i < n; i++){
        scanf("%d%d", &val[i].x, &val[i].y);
        val[i].dist = sqrt(val[i].x*val[i].x + val[i].y*val[i].y);
    }
    sort(val, val + n, cmp);
    for(int i = 0; i < n; i++){
        scanf("%d%d", &x, &y);
        dist = sqrt(x*x + y*y);
        int m;
        a = 0, b = n - 1;
        while(a < b){
            m = a + (b - a)/2;
            if(val[m].dist >= dist) b = m;
            else a  = m + 1;
        }
        for(int j = max(0, a - 100); j < min(n, a + 100); j++){
            ans = min(ans, sqrt((x - val[j].x)*(x - val[j].x) + (y - val[j].y)*(y - val[j].y)));
        }
    }
    printf("%.3f", ans);

    #ifdef LOCAL
    printf("\n");
    }
    #endif // LOCAL
    return 0;
}

Thank you!

------from ProLights

时间: 2024-10-14 04:34:13

UESTC 1170 红与蓝 计算几何、贪心、红蓝点对的相关文章

冲击力的红蓝白三色碰撞

具有视觉冲击力的红蓝白三色碰撞,牢牢吸引注意力.蕾丝拼接立领短袖T恤 一年四季,轮回交替,我们都希望四季如春,但冬天的到来并不以你的意志为转移.没有冬天只有春夏也会很单调,就 如同南方那些从没去过北方的人们,总是好奇雪是什么样的味道,一场没膝的大雪就能让他们啧啧称奇,冬天有冬天的美景, 你在其它季节里根本看不到.貉子毛领羽绒服 你也许会觉得T恤太过轻佻随意,只适合那些每天无所事事的大学生.但是亲爱的,如果不是每天都要参加一场严肃的 会议或收到一次隆重的约会邀请,那么你有什么理由不肯脱下束缚的修身

5.5 编程实例-红蓝三角形

#include <GL/glut.h> typedef GLfloat point2d[2]; // a point data type void triangle( point2d a, point2d b, point2d c) // display a triangle { glBegin(GL_TRIANGLES); glVertex2fv(a); glVertex2fv(b); glVertex2fv(c); glEnd(); } void display(void) { poin

阿森纳的足总杯半决赛与红蓝大战撞车

阿森纳的足总杯半决赛与红蓝大战撞车 阿森纳的足总杯半决赛与红蓝大战撞车 http://www.ebay.com.au/cln/fajin-jh8uduwb/2015-03-20/190007576018http://www.ebay.com.au/cln/ggpus_ivyhd4ru/2015-03-20/189809305019http://www.ebay.com.au/cln/wni-ko0/2015-03-20/189986486014http://www.ebay.com.au/cln

制作立体图像(一):红蓝眼镜原理

立体眼镜分为色差式.偏光式等几种其中色差式还可以再分为红-蓝.红-绿.红-青等,是最简单,但也是效果最差的一种这里仅介绍常见的红蓝立体图像这种方式仅需要一块红蓝眼镜,淘宝上买个很便宜的就可以了,大概10块钱左右 常见的红蓝眼镜也可以叫红青眼镜,即左眼红色.右眼青色(绿色和蓝色的组合)实现办法是让左眼仅看到图片中的红色部分,过滤掉绿色和蓝色右眼仅看到图片中的青色(绿色+蓝色)部分,过滤掉红色立体图片是通过将左眼看到的红色图像和右眼看到绿色.蓝色合成到一副图片的结果 实际上红色在通过红色镜片时会显示

Postman和Selenium IDE开局自带红蓝BUFF属性,就问你要还是不要

话不多说,下面给大家介绍两款工具,selenium IDE和Postman,为什么说是自带红蓝Buff,因为想做UI自动化和接口自动化的同学,很多时候,都难在了开头.比如你要学习语言,你要学习框架,开始还有兴趣,后来发现越学越多,还是不会实战.渐渐的就失去了兴趣,觉得太难.但是我们反过来,如果通过你自己去生成自动化脚本,然后根据脚本的难点去学习语言和框架,会不会变的更简单些呢?或者说当你看到你敲的代码代替了你的手工,会不会觉得是一件特别有意思的事情呢? Web UI自动化环境:Python3.S

红蓝对抗--蓝军套路之利用系统工具进行文件传输

在进行红蓝对抗演练时,蓝军常常需要最大化利用当前的环境绕过重兵防守的系统的防火墙.IDS.IPS等报警和监控系统进行文件传输.关键时刻,如何绕过这些防护进行文件传输,就成了蓝军***检测中的重要一步. 道高一尺,魔高一丈.今天就来摆一下利用操作系统默认自带工具进行文件传输的正确姿势. 一.搭建HTTP Server ● Python python2:python -m SimpleHTTPServer 1337 以上命令会在当前目录启动 HTTP 服务,端口为 1337 python3:pyth

红蓝指挥棒(LED充电式指挥棒)介绍说明

红蓝充电指挥棒.红蓝指挥棒(LED充电式指挥棒)介绍说明交通指挥棒/红蓝指挥棒/执勤指挥棒/浦喆电子品牌:浦喆 型号:PZ-301制造商:河南浦喆电子科技有限公司1.产品描述:发光交通指挥棒适用于公路交通.人口密集区域作为交通疏散指挥使用:2.产品结构:注塑ABS手柄.电源开关.PCB电路.LED发光二极管.PC聚碳管组成:3.尺寸:全长29.5CM,手柄直径3.9CM,外管直径3.4CM:4.毛/净重:10.5kg/8.5kg :5.装箱数:352547cm:装箱数:50个/箱,用3节7号电池

如何制作红蓝3d电影(详细教程)

自20世纪初以来,电影制作人一直试图通过制作3D电影来利用我们的双眼.现在,由于大量相对实惠的3D电视,你可以享受电影院以外的额外空间 - 你自己拍摄的视频.对于大预算的电影,电影摄影师使用两个相连的相机,并用分束器分开.但除非你有好莱坞级别的资金投入 - 钻机成本至少几千美元 - 你最好用更便宜的双镜头相机,这可以达到同样的效果. (甚至还有一部智能手机,LG Thrill,用立体镜头拍摄3D.)在这些镜头上,镜头同时录制两个视频. 拍摄 我是一个视频爱好者,但直到最近我还没有涉足第三个维度.

【kd-tree】CDOJ - 1170 - 红与蓝

kd-tree模板题,对红点建立kd-tree,用每个蓝点查询,更新最小值即可. #include<cstdio> #include<cmath> #include<algorithm> using namespace std; #define N 100010 #define EPS 0.00000001 #define INF 1000000000000000007.0 #define KD 2 int qp[KD]; double disn; int n,root