Friends and Berries URAL - 2067 (计算三点共线和计算的时候的注意点)
题目链接:https://cn.vjudge.net/problem/URAL-2067
具体思路:判断三点共线就可以了,只有一对点能满足,如果一对就没有那就没有满足的.
在计算的时候,要注意,如果是按照斜率算的话,可以把除法转换为乘法,防止精度的损失.
如果是按照距离算的话,一定要注意一点,在枚举的时候我们是选择左下和右上的点,然后再去枚举中间的每一个点,一开始我为了防止精度的损失并没有对每段距离进行开根号,直接按照平方的进行计算,但是要注意一点
假设三个点.分别是 ( x1 , y1 ) ( x2 , y2 ) 和 ( x3 , y3 ),比较的时候比较的应该是
sqrt( (x2-x1)^2 + (y2-y1)^2) + sqrt( (x3-x2)^2 + (y3-y1)^2 ) 和 sqrt( (x3-x1)^2 + (y3-y1)^2)之间的大小.
这个和 (x2-x1)^2 + (y2-y1)^2) + (x3-x2)^2 + (y3-y1)^2 和 (x3-x1)^2 + (y3-y1)^2 之间的大小. 是完全不一样的. 如果将第一项进行平方的话,和第二项会查着一项.
不过对于这个题的话,用距离算的话,肯定会有精度损失,还是用斜率做比较稳妥.
AC代码:
#include<iostream>
#include<cstring>
#include<iomanip>
#include<algorithm>
#include<stdio.h>
#include<cmath>
using namespace std;
# define inf 0x3f3f3f3f
# define ll long long
# define pi acos(-1.0)
const int mod = 1e9 ;
const int maxn = 200000+100;
const int eps = 1e-6;
struct node
{
ll x,y;
int id;
} q[maxn];
bool cmp(node t1,node t2)
{
if(t1.x!=t2.x)return t1.x<t2.x;
return t1.y<t2.y;
}
ll cal(node t1,node t2)
{
return (t1.x-t2.x)*(t1.x-t2.x)+(t1.y-t2.y)*(t1.y-t2.y);
}
int main()
{
int n;
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%lld %lld",&q[i].x,&q[i].y);
q[i].id=i;
}
sort(q+1,q+n+1,cmp);
// for(int i=1;i<=n;i++){
// cout<<q[i].id<<" "<<q[i].x<<" "<<q[i].y<<endl;
// }
int flag=1;
ll ans=cal(q[1],q[n]);
//cout<<ans<<endl;
ll t1=q[1].x-q[n].x;
ll t2=q[1].y-q[n].y;
for(int i=2; i<=n-1; i++)
{
ll s1=q[1].x-q[i].x;
ll s2=q[1].y-q[i].y;
if(s1*t2!=s2*t1){
flag=0;
break;
}
// if(cal(q[i],q[1])+cal(q[i],q[n])>ans)
// {
// flag=0;
// break;
// }
}
if(flag)
{
printf("1\n");
printf("%d %d\n",q[1].id,q[n].id);
}
else
{
printf("0\n");
}
return 0;
}
Friends and Berries URAL - 2067 (计算三点共线和计算的时候的注意点)的更多相关文章
- python小练习:使用循环和函数实现一个摇骰子小游戏。游戏规则如下:游戏开始,首先玩家选择Big or Small(押大小),选择完成后开始摇三个骰子,计算总值,11<=总值<=18为“大”,3<=总值<=10为“小”。然后告诉玩家猜对或者是猜错的结果。
python小练习:使用循环和函数实现一个摇骰子小游戏.游戏规则如下:游戏开始,首先玩家选择Big or Small(押大小),选择完成后开始摇三个骰子,计算总值,11<=总值<=18为“ ...
- nyis oj 68 三点顺序 (计算几何基础)
三点顺序 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描写叙述 如今给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,如今让你推断A,B,C是顺时针给出的还是逆 ...
- 使用函数计算三步实现深度学习 AI 推理在线服务
目前深度学习应用广发, 其中 AI 推理的在线服务是其中一个重要的可落地的应用场景.本文将为大家介绍使用函数计算部署深度学习 AI 推理的最佳实践, 其中包括使用 FUN 工具一键部署安装第三方依赖 ...
- 复杂分布式架构下的计算治理之路:计算中间件 Linkis
前言 在当前的复杂分布式架构环境下,服务治理已经大行其道.但目光往下一层,从上层 APP.Service,到底层计算引擎这一层面,却还是各个引擎各自为政,Client-Server 模式紧耦合满天飞的 ...
- hdu 4885 (n^2*log(n)推断三点共线建图)+最短路
题意:车从起点出发,每次仅仅能行驶L长度,必需加油到满,每次仅仅能去加油站或目的地方向,路过加油站就必需进去加油,问最小要路过几次加油站. 開始时候直接建图,在范围内就有边1.跑最短了,再读题后发现, ...
- hdu 4885 (n^2*log(n)判断三点共线建图)+最短路
题意:车从起点出发,每次只能行驶L长度,必需加油到满,每次只能去加油站或目的地方向,路过加油站就必需进去加油,问最小要路过几次加油站. 开始时候直接建图,在范围内就有边1.跑最短了,再读题后发现,若几 ...
- ural 2067. Friends and Berries
2067. Friends and Berries Time limit: 2.0 secondMemory limit: 64 MB There is a group of n children. ...
- URAL 2067 Friends and Berries (推理,数学)
题意:给定 n 个人,每个人两个值s, r,要满足,p(v, u) = sqrt((sv − su)^2 + (rv − ru)^2), p(v,u,w) = (p(v,u) + p(v,w) + p ...
- 正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——3 计算4个函数
整个引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.git nullable, firstpos, la ...
随机推荐
- mb_strlen(,utf-8);可以除去中文字符,统一返回是几个字符
mb_strlen(,utf-8);可以除去中文字符,统一返回是几个字符
- phpcms 思维导图
原文地址 : https://www.cnblogs.com/fuyunbiyi/archive/2012/03/12/2391253.html
- Docker 入门 到部署Web 程序- (阿里面试常用的docker命令和优点)
最近阿里的面试官问我Docker是做什么用的,我记得之前360和美团,京东的都问过,但是一直没时间看,最近有时间了,系统的学习了一下Docker,在此做一下记录,方便各位看官学习交流 一.Docker ...
- adb使用过程常见的几种错误总结
问题1:Failure [INSTALL_FAILED_ALREADY_EXISTS] 问题原因:该程序已存在. 解决方法:增加-r参数,即可成功覆盖安装 问题2:Failure [INSTALL_F ...
- 【bzoj4182】Shopping 树的点分治+dfs序+背包dp
题目描述 给出一棵 $n$ 个点的树,每个点有物品重量 $w$ .体积 $c$ 和数目 $d$ .要求选出一个连通子图,使得总体积不超过背包容量 $m$ ,且总重量最大.求这个最大总重量. 输入 输入 ...
- MySQL复制 -- 应用场景
本文行文路径如下: 什么是复制?复制是怎么工作的?复制有哪几种表现形式?复制能解决那些问题?业界有哪些数据同步解决方案? 什么是复制? 官方解释道:Replication enables data f ...
- 【数据库_Mysql】JAVA-数据库Date格式在前台JSP页面的获取
问题: 数据库保存的为date格式的日期 在前台JSP页面显示的为一串数字1487897 解决办法: 数据库表中字段对应的实体对象属性的get方法上添加一行代码 页面即可正常显示
- 【NOIP2017】宝藏(状态压缩,动态规划)
[NOIP2017]宝藏(状态压缩,动态规划) 题面 洛谷 题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的 m 条道路 ...
- Java之JNI的介绍与应用20170622
/*************************************************************************************************** ...
- bzoj1467 Pku3243 clever Y
1467: Pku3243 clever Y Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 313 Solved: 181[Submit][Status ...