传送门

题意:

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

  如果初始坐标可以构成直角三角形,输出"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. ConnectTimeout和ReadTimeout所代表的意义

    参考:ConnectTimeout和ReadTimeout所代表的意义 ConnectTimeout 指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间. 在java中,网络状况 ...

  2. linux硬盘的分区、格式化、挂载以及LVM

    linux硬盘的分区.格式化.挂载以及LVM   多块硬盘的组合: 硬盘分两种:ide和scsi. ide硬盘: /dev/hda 第一块IDE硬盘 /dev/hdb 第二块IDE硬盘 ... /de ...

  3. dreamweavercs 和dreamweaver cc的區別

    https://zhidao.baidu.com/question/1541178469432885667.html

  4. Bootstrap之信息记录

    Bootstrap中文网: http://www.bootcss.com/ 上面有一些资料和范例 实例精选: https://v3.bootcss.com/getting-started/#examp ...

  5. vue2 mint-ui loadmore(下拉刷新)

    <template> <div class="page-loadmore"> <h1 class="page-title"> ...

  6. vue-cli: 渲染过程理解(vue create demo01方式创建)

    1.根目录配置 vue.config.js, 设置入口文件: index.js module.exports = { pages:{ index: { entry: 'src/pages/home/i ...

  7. Hbase和Oracle的对比

    转自:http://www.cnblogs.com/chay1227/archive/2013/03/17/2964020.html 转自:http://blog.csdn.net/allen879/ ...

  8. linux利用CMakeLists编译cuda程序

    文件目录: cudaTest |--utils.cu |--utils.h |--squaresum.cu |--squaresum.h |--test.cpp |--CMakeLists.txt 编 ...

  9. python基础数据类型--dict 字典

    字典 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必 ...

  10. ScheduledThreadPoolExecutor 吞异常

    线程挂掉不一定会输出日志到控制台,比如ScheduledThreadPoolExecutor,如果在执行的任务中有未捕获的异常抛出,就行停止调度,没有任何错误输出到控制台或日志文件.在项目中这会导致一 ...