首页 > 其他 > 详细

CodeForces - 849B 几何

时间:2019-08-06 23:22:30      阅读:103      评论:0      收藏:0      [点我收藏+]

题意:给n个点,问是否能两条平行线覆盖所有的点

思路:因为要求全部覆盖,所以我们第一个点肯定是会入其中一条直线,其实只用判前三个点的所有情况即可

#include<stdio.h>
#include<set>
#include<algorithm>
using namespace std;

int a[1010],n;
set<double>s;

bool judge(double k)
{
    s.clear();
    for(int i=1; i<=n; ++i)
        s.insert(a[i]*1.0-k*i);
    return s.size()==2;
}

int main()
{
    scanf("%d",&n);
    for(int i=1; i<=n; ++i)
        scanf("%d",&a[i]);
    if(judge((a[2]-a[1])/1.0)||judge((a[3]-a[2])/1.0)||judge((a[3]-a[1])/2.0))
        printf("Yes\n");
    else
        printf("No\n");
    return 0;
}

 

CodeForces - 849B 几何

原文:https://www.cnblogs.com/Lis-/p/11312075.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!