[CodeForces_618C]Constellation
题目链接
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的更多相关文章
- 【CodeForces 618C】Constellation
题 Cat Noku has obtained a map of the night sky. On this map, he found a constellation with n stars n ...
- CodeForces 718C && HDU 3572 && Constellation
Point 1. 区间乘以一个数/矩阵的幂时,不要用指数相加的方法. 而要用直接维护mulv[x]表示区间要乘多少. 不然的话,空加一个logn 2. 要点在于,冲突的点连边,形成二分图,对于在同一个 ...
- [JOI2012春季合宿]Constellation (凸包)
题意 题解 神仙结论题. 结论: 一个点集合法当且仅当其凸包上的两种颜色点分别连续. 证明: 必要性显然. 充分性: 考虑对于一个不同色三角形\(ABC\),不妨设点\(A\)为白点,点\(B,C\) ...
- Kafka vs RocketMQ——多Topic对性能稳定性的影响-转自阿里中间件
引言 上期我们对比了RocketMQ和Kafka在多Topic场景下,收发消息的对比测试,RocketMQ表现稳定,而Kafka的TPS在64个Topic时可以保持13万,到了128个Topic就跌至 ...
- Kafka vs RocketMQ—— Topic数量对单机性能的影响-转自阿里中间件
引言 上一期我们对比了三类消息产品(Kafka.RabbitMQ.RocketMQ)单纯发送小消息的性能,受到了程序猿们的广泛关注,其中大家对这种单纯的发送场景感到并不过瘾,因为没有任何一个网站的业务 ...
- Oracle层次查询
Oracle层次查询的语法如下: 下面根据两道“烧脑”的题具体来体现: 1. 根据时间先后顺序,十二星座的英文名称用逗号串起来为'Aries,Taurus,Gemini,Cancer,Leo,Virg ...
- c#实现万年历示例分享 万年历农历查询
cs.cs(类页面) using System;using System.Collections.Generic;using System.Linq;using System.Web; namespa ...
- Android之ListView&Json加载网络数据
使用到的主要内容: 1.Json 解析网络数据 2.异步任务加载图片和数据 3.ListView 的内存空间优化(ConvertView)和运行时间优化(ViewHolder) 4.ListView ...
- 使用Graph工具观察FFT波形
2014年8月1日,经过很长时间的上网查阅资料,走了很多弯路,终于可以成功使用Graph工具仿真波形了,虽然这个的确很简单,但是经过自己摸索出来的,兴奋之情难于言表. 明天就是七夕了,刚和女朋友分手的 ...
随机推荐
- 机器学习入门-数值特征-数据四分位特征 1.quantile(用于求给定分数位的数值) 2.plt.axvline(用于画出竖线) 3.pd.pcut(对特征进行分位数切分,生成新的特征)
函数说明: 1. .quantile(cut_list) 对DataFrame类型直接使用,用于求出给定列表中分数的数值,这里用来求出4分位出的数值 2. plt.axvline() # 用于画 ...
- cordova 源码分析记录
1.模块定义 (function () { var modules = {}; // Stack of moduleIds currently being built. var requireStac ...
- UE 不生成.bak文件
.bak文件是UE处理文件时自动备份的文件,可以取消备份这样就不会生成.bak文件了 菜单:高级-设置-文件处理-备份 应用和确定
- linux下mysql开启远程访问权限 防火墙开放3306端口
linux下mysql开启远程访问权限 防火墙开放3306端口 转载 2017-01-21 作者:JAVA-ANDROID 这篇文章主要为大家详细介绍了linux下mysql开启远程访问权限,防 ...
- PL/SQL 日期时间类型函数及运算
内部存储格式: 世纪.年.月.日.小时.分钟.秒 默认格式是:DD-MON-RR. SYSDATE 返回当前的系统时间. SELECT SYSDATE FROM DUAL: 对日期的数学运算 SELE ...
- it工程师常用英文自我介绍常用用语
Good morning ! It is really my honor to have this opportunity for an interview, I hope i can make ...
- c# vs2013部署项目
http://demo.netfoucs.com/shinepan/article/details/24865931
- js教程
http://study.163.com/course/courseLearn.htm?courseId=1076006#/learn/video?lessonId=1290547&cours ...
- python字典dict的成对运算
dict = {'age': 18, 'name': 'jin', 'sex': 'male', }# for k,v in dict.items():# print(k,v)# v1 = dict[ ...
- SPSS-判别分析
判别分析 判别分析是一种有效的对个案进行分类分析的方法.和聚类分析不同的是,判别分析时组别的特征已知. 定义:判别分析先根据已知类别的事物的性质,利用某种技术建立函数式,然后对未知类别的新事物进 行判 ...