传送门

题意:

  给出三个点的坐标,初始,这三个点可以构成一个三角形。

  如果初始坐标可以构成直角三角形,输出"RIGNT"。

  如果某个点的 x或y 坐标移动一个单位后可以组成直角三角形,输出"ALMOST"。

  如果不能构成直角三角形,输出"NEITHER"。

题解:

  我的思路:

    如何判断是否含有直角呢--向量。

    a,b,c 三点可以构成三条向量 ab,ab,bc(不考虑方向),如果存在某两条向量的点乘积为0,那么这两个向量垂直。

AC代码:

 #include<iostream>
#include<cstdio>
using namespace std;
#define P pair<int ,int > struct Node
{
int x,y;
}a[];
P p[]; void updata()//更新向量
{
for(int i=;i < ;++i)
{
p[i].first=a[(i+)%].x-a[i].x;
p[i].second=a[(i+)%].y-a[i].y;
}
}
bool isSat()//判断是否有重合的两点
{
for(int i=;i < ;++i)
if(p[i].first == && p[i].second == )
return false;
return true;
}
int product(int i,int j)//点乘积
{
return p[i].first*p[j].first+p[i].second*p[j].second;
}
bool Check()
{
updata();
if(!isSat())
return false;
if(!product(,) || !product(,) || !product(,))
return true;
return false;
}
char *Solve()
{
if(Check())
return "RIGHT";
for(int i=;i < ;++i)
{
//i点的x右移一个单位,以下同理
a[i].x++;
if(Check())
return "ALMOST";
a[i].x--; a[i].x--;
if(Check())
return "ALMOST";
a[i].x++; a[i].y++;
if(Check())
return "ALMOST";
a[i].y--; a[i].y--;
if(Check())
return "ALMOST";
a[i].y++;
}
return "NEITHER";
}
int main()
{
for(int i=;i < ;++i)
scanf("%d%d",&a[i].x,&a[i].y);
printf("%s\n",Solve());
return ;
}

CodeForces - 18A Triangle(数学?)的更多相关文章

  1. Codeforces Round #512 (Div. 2) D.Vasya and Triangle 数学

    题面 题意:给你n,m,k,在你在(0,0)到(n,m)的矩形内,选3个格点(x,y都是整数),使得三角形面积为n*m/k,不能找到则输出-1 题解:由毕克定理知道,格点多边形的面积必为1/2的整数倍 ...

  2. CodeForces 239A. Triangle

    Link:  http://codeforces.com/contest/407/problem/A 给定直角三角形的2个直角边a,b.求在直角坐标系中,是否存在对应的直角三角形,使得三个定点都在整点 ...

  3. HDU 5914 Triangle 数学找规律

    Triangle 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5914 Description Mr. Frog has n sticks, who ...

  4. codeforces C. Triangle

    C. Triangle time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...

  5. acdream.18.KIDx's Triangle(数学推导)

    KIDx's Triangle Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Sub ...

  6. 杭赛.Triangle(数学推导)

    Triangle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  7. CodeForces 173A Rock-Paper-Scissors 数学

    Rock-Paper-Scissors 题目连接: http://codeforces.com/problemset/problem/173/A Description Nikephoros and ...

  8. codeforces 6A. Triangle

    A. Triangle time limit per test 2 seconds memory limit per test 64 megabytes input standard input ou ...

  9. Success Rate CodeForces - 807C (数学+二分)

    You are an experienced Codeforces user. Today you found out that during your activity on Codeforces ...

随机推荐

  1. Python的web编程

    1.urlparse模块 urlparse.urlparse()      将一个url转化为(prot_sch, net_loc, path, params, query, frag)的元组 url ...

  2. postfix 邮箱设置及常见错误

    postfix 邮箱设置及常见错误 1.如果装了sendmail的话,先卸载了. yum remove sendmail 2.安装 Postfix yum install postfix 3.更改默认 ...

  3. 一、ABP框架框架摘要

    ABP框架几点说明: 一.什么是ABP ABP是一个建立在最新的ASP.NET的MVC和Web API技术的应用框架.它可以很容易地使用依赖注入.日志记录.验证.异常处理.本地化等,也使用流行的框架和 ...

  4. 三、K8S成功

    kubeadm join 172.17.149.114:6443 --token yjogpa.kk85u2i4n5rt1omq --discovery-token-ca-cert-hash sha2 ...

  5. 数据同步到redis中时候需要 需要给关联的表增加id 如果是一对多 则增加list存储id 如果是一个 则增加一个字段 ;目的是便于取值

  6. CentOS安装、配置Nginx反向代理

    添加Nginx存储库 sudo yum install epel-release 安装Nginx sudo yum install nginx 启动Nginx sudo systemctl start ...

  7. BZOJ3724PA2014Final Krolestwo——欧拉回路+构造

    题目描述 你有一个无向连通图,边的总数为偶数.设图中有k个奇点(度数为奇数的点),你需要把它们配成k/2个点对(显然k被2整除).对于每个点对(u,v),你需要用一条长度为偶数(假设每条边长度为1)的 ...

  8. Girls and Boys HDU - 1068 二分图匹配(匈牙利)+最大独立集证明

    最大独立集证明参考:https://blog.csdn.net/qq_34564984/article/details/52778763 最大独立集证明: 上图,我们用两个红色的点覆盖了所有边.我们证 ...

  9. 使用开源项目xutils3完成下载

    上一次自己写了一个多线程断点续传下载的demo,过于麻烦,bug超多,所以我学习使用xutils来完成此功能. 先将xutils依赖搭建好(上一篇博客已经具体写了方法) 先看看效果图: 下面开始代码的 ...

  10. 各种MM(存储器)含义

    1.rom:read only memory 只读存储器 只能读,不能写. 2.ram:random access memory 随机存取存储器 可读可写. 3.fifo:first in first ...