题目链接

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. 深度学习原理与框架-神经网络-cifar10分类(代码) 1.np.concatenate(进行数据串接) 2.np.hstack(将数据横着排列) 3.hasattr(判断.py文件的函数是否存在) 4.reshape(维度重构) 5.tanspose(维度位置变化) 6.pickle.load(f文件读入) 7.np.argmax(获得最大值索引) 8.np.maximum(阈值比较)

    横1. np.concatenate(list, axis=0) 将数据进行串接,这里主要是可以将列表进行x轴获得y轴的串接 参数说明:list表示需要串接的列表,axis=0,表示从上到下进行串接 ...

  2. Model操作补充

    参考: http://www.cnblogs.com/wupeiqi/articles/6216618.html

  3. Xcode 新建bundle id不同的且app图标也不同的新的target的步骤

    方法一: duplicate一个target 修改target配置文件中的bundle id,app icon图标文件位置(必要时重命名app icon文件名),plist文件位置,entitleme ...

  4. Oracle 学习总结 - 表和索引的性能优化

    表的性能 表的性能取决于创建表之前所应用的数据库特性,数据库->表空间->表,创建数据库时确保为每个用户创建一个默认的永久表空间和临时表空间并使用本地管理,创建表空间设为本地管理并且自动段 ...

  5. THE BOX MODEL

    Review In this lesson, we covered the four properties of the box model: height and width, padding, b ...

  6. Servlet基本_オブジェクトのスコープ

    1.スコープ種類Servletには以下のスコープがあります.Request.Session.Applicationの順にスコープは広くなっていきます.・Applicationスコープ:アプリケーション ...

  7. javascript中函数作用域和声明提前

    javascript不像java等其他强类型语句,没有块级作用域(括号内的代码都有自己的作用域,变量在声明它们的代码段之外不可见)一说,但有自己的独特地方,即函数作用域. 函数作用域:变量在声明它们的 ...

  8. TCP工作过程;TCP Flood的攻击的原理和现象;TCP协议设计的安全隐患与防范对策

    TCP分三个阶段 连接建立(三次握手) 数据传输 连接释放(四次挥手) TCP工作过程 TCP连接建立阶段 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给S ...

  9. 循环取到json中的字段数据,加到html中

    $.ajax({ type:'post', data:{specialName:specialName,count:count}, url:"admin/pcAdminGetArticleL ...

  10. 如何配置eclipse的安卓SDK下载目录

    首先,打开eclipse,主界面如图 2 点击Windows下的preference 3 然后在出现的对话框中选择“android” 4 然后我们就能看到的主界面,在这里输入android sdk的目 ...