题目链接

http://codeforces.com/problemset/problem/618/C

题意

给二维平面一些点的坐标,保证不是所有点都在一条直线上,各点不重合,输出三个点的id,满足其他所有的点都在这三个点组成的三角形的(严格的)外部。

满足题意则这样的三角形是一定存在的。

点坐标范围 ( - 10^9 ≤ xi, yi ≤ 10^9) 。

思路

好吧这应该是水题中的水题了...应该再在纸上画画想一想~

原思路:选择id为1,2,3的点,再来后面的点若在三角形内部(则替换原任意点),特别的,若在三角形某条边上,则替换特定的点。

但对判断点在三角形内部的公式望而却步。

正确思路:

把所有点,按从从左到右,从下到上排序。

只要排序的前三个点构成了三角形,就输出,这样的三角形一定满足题目条件。

注意x1y2-x2y1那里int会爆精度。

代码

#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std; struct Point {
int id;
int x;
int y;
} point[int(1e5+5)]; bool cmp(struct Point point1,struct Point point2){
if(point1.x!=point2.x){return point1.x<point2.x;}
else {return point1.y<point2.y;}
} int main(int argc, const char * argv[]) {
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d",&point[i].x,&point[i].y);
point[i].id=i;
}
sort(point+1,point+n+1,cmp); printf("%d %d ",point[1].id,point[2].id);
for(int i=3;i<=n;i++){
long long int x1=point[1].x-point[2].x;
long long int y1=point[1].y-point[2].y;
long long int x2=point[i].x-point[1].x;
long long int y2=point[i].y-point[1].y;
if((x1*y2-x2*y1)!=0){
printf("%d",point[i].id);
return 0;
}
} return 0;
}

[CodeForces_618C]Constellation的更多相关文章

  1. 【CodeForces 618C】Constellation

    题 Cat Noku has obtained a map of the night sky. On this map, he found a constellation with n stars n ...

  2. CodeForces 718C && HDU 3572 && Constellation

    Point 1. 区间乘以一个数/矩阵的幂时,不要用指数相加的方法. 而要用直接维护mulv[x]表示区间要乘多少. 不然的话,空加一个logn 2. 要点在于,冲突的点连边,形成二分图,对于在同一个 ...

  3. [JOI2012春季合宿]Constellation (凸包)

    题意 题解 神仙结论题. 结论: 一个点集合法当且仅当其凸包上的两种颜色点分别连续. 证明: 必要性显然. 充分性: 考虑对于一个不同色三角形\(ABC\),不妨设点\(A\)为白点,点\(B,C\) ...

  4. Kafka vs RocketMQ——多Topic对性能稳定性的影响-转自阿里中间件

    引言 上期我们对比了RocketMQ和Kafka在多Topic场景下,收发消息的对比测试,RocketMQ表现稳定,而Kafka的TPS在64个Topic时可以保持13万,到了128个Topic就跌至 ...

  5. Kafka vs RocketMQ—— Topic数量对单机性能的影响-转自阿里中间件

    引言 上一期我们对比了三类消息产品(Kafka.RabbitMQ.RocketMQ)单纯发送小消息的性能,受到了程序猿们的广泛关注,其中大家对这种单纯的发送场景感到并不过瘾,因为没有任何一个网站的业务 ...

  6. Oracle层次查询

    Oracle层次查询的语法如下: 下面根据两道“烧脑”的题具体来体现: 1. 根据时间先后顺序,十二星座的英文名称用逗号串起来为'Aries,Taurus,Gemini,Cancer,Leo,Virg ...

  7. c#实现万年历示例分享 万年历农历查询

    cs.cs(类页面) using System;using System.Collections.Generic;using System.Linq;using System.Web; namespa ...

  8. Android之ListView&Json加载网络数据

    使用到的主要内容: 1.Json 解析网络数据 2.异步任务加载图片和数据 3.ListView 的内存空间优化(ConvertView)和运行时间优化(ViewHolder) 4.ListView ...

  9. 使用Graph工具观察FFT波形

    2014年8月1日,经过很长时间的上网查阅资料,走了很多弯路,终于可以成功使用Graph工具仿真波形了,虽然这个的确很简单,但是经过自己摸索出来的,兴奋之情难于言表. 明天就是七夕了,刚和女朋友分手的 ...

随机推荐

  1. 【JEECG技术文档】JEECG 接口权限开发及配置使用说明

    1.功能介绍   通过接口配置实现,对接口的访问权限控制和数据权限控制,接口时REST接口,接口权限认证机制使用Json web token (JWT) 接口权限调用流程: (1)通过接口用户的用户名 ...

  2. wed开发基础--练习题

    一.HTML部分 本小节重点: 熟练使用div+span布局,知道div和span的语义化的意思 熟悉对div.ul.li.span.a.img.table.form.input标签有深刻的认知, 初 ...

  3. css下拉导航栏代码

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  4. (已解决)搭建ssm框架时给springmvc传入对象传不进去,传单个字符串可以

    问题如题: springmvc会自动解析传入的内容,只要将表单中的对象名字和pojo一一对应,否则会报错. jsp默认好像是会加上请求头. 如果要是用其他的方式去给接口传入对象.要加上请求头. Con ...

  5. linux 3.10的list_del

    最近看到一个page的数据比较奇怪: crash> page ffffea002c239c58 struct page { flags = , _count = { counter = 34-- ...

  6. 一张图知道HTML5布局(图)

  7. MVC 2nd

    步骤 3 创建控制器. StudentController.java public class StudentController { private Student model; private S ...

  8. (转)NHibernate+MySql常见问题

    http://blog.51cto.com/4837471/1567675 版本: NHibernate :NHibernate 4.0.1GA MySql:MySql 5.0.1 常见问题一: “N ...

  9. quartz 实例

    第一步:添加jar包 第二步:在spring配置文件中添加 <context:annotation-config/> 第三步:编写定时代码 我们通常做Java后台接口,是让前端访问的,让前 ...

  10. Vue sync修饰符的使用

    父子组件传值,父组件可以给子组件传值,但是子组件是不能修改组件提供的值,这里vue提供了sync修饰符,以前父组件点击子组件显示,子组件关闭按钮,父组件再点击子组件就无法让子组件显示.因为子组件点击关 ...