传送门

题意:

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

  如果初始坐标可以构成直角三角形,输出"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 ;
}

最新文章

  1. 猜字符游戏之java
  2. vuejs - the component is a fragment instance
  3. 11g SQL Monitor
  4. win7中安装redis
  5. C语言 结构体中的成员域偏移量
  6. [转]C#取得内网IP、外网IP、客户端IP方法
  7. request.setCharacterEncoding 和常用内置对象 跳转
  8. 在eclipse中查找指定文件
  9. poi生成excel
  10. mac下修改mysql登录密码
  11. 在.NET 应用程序设计中如何选择Class, Abstract Class and Interface
  12. MVC4,4月22日,Ninject的另外注入方式。
  13. oracle linux 安装过程错误 :Error in invoking target ‘agent nmhs’ of makefile
  14. ASP.Net数据库如何存取图片
  15. Gerrit系统框架介绍
  16. PyCharm中快速给选中的代码加上{}、&lt;&gt;、()、[]
  17. Spring Boot中Web应用的统一异常处理
  18. redi集群测试
  19. linux 内核启动流程
  20. vue子组件的自定义事件

热门文章

  1. idea中Lombok的使用
  2. 避免MQ消息重发的简单实现思路
  3. 配置 BizTalk Server
  4. hdu1875(最小生成树prime)
  5. HTML协议
  6. CetenOS 6.9 搭建hubot运维机器人
  7. 【XSY2772】数列 特征多项式 数学
  8. 「BZOJ1691」[Usaco2007 Dec] 挑剔的美食家 (Treap)
  9. Codeforces Round #540 (Div. 3) A,B,C,D2,E,F1
  10. Odoo