链接 : http://codeforces.com/contest/849/problem/B

题意 : 给出 n 个在直角坐标系上的点,每个点的横坐标的值对应给出的顺序序数,比如 1 2 4 3 则相当于给出了(1,1)、(2,2)、(3,4)、(4,3)这四个点,现在问你能不能找出两条不重叠的平行直线将所有点都覆盖掉

分析 : 假设存在满足题目条件的两条平行直线,那么肯定有一条是落在了1-2(第一和第二个点间连线)或1-3或者2-3上,我们分别考虑这三条直线以及其他点就能够知道是否满足题意了,比如现在考虑1-2这条直线,将不在这条直线上的所有点都暂存起来,最后判断暂存起来的点是否能够连成一条直线,并且斜率与1-2这条直线一样。用同样的方法考虑1-3以及2-3即可。

#include<bits/stdc++.h>
using namespace std;
;
int n;
struct point { int x, y; };
point arr[maxn], tmp[maxn];
double Slope(point fir, point sec) { ///计算两点间连线斜率
    return (double)((double)sec.y-(double)fir.y) / (double)((double)sec.x-(double)fir.x);
}
bool Case1()
{
    ], arr[]);///1 - 2的情况
    ;///不在 1 - 2这条直线上的点的个数
    ; i<=n; i++){
        ], arr[i]) != k){ ///挑出不在 1 - 2 这条直线上的点
            tmp[cnt++] = arr[i];
        }
    }
    if(!cnt) return false;///如果cnt==0那么也就是所有点都在1 - 2上,不满足题意
    ) return true;///如果挑出来是一个点的情况,那么1 - 2这条线以及这个点是满足题意的
    ], tmp[]);///计算斜率
    if(kk != k) return false;///如果与 1 - 2的斜率不一致,不满足题意
    ; i<cnt; i++){///一个个点去试
        ], tmp[i]) != kk)
            return false;
    }
    return true;
}
bool Case2()
{
    ],arr[]);
    ;
    ; i<=n; i++){
        ){
            ], arr[i]) != k){
                tmp[cnt++] = arr[i];
            }
        }
    }
    if(!cnt) return false;
    ) return true;
    ], tmp[]);
    if(kk != k)return false;
    ; i<cnt; i++){
        ], tmp[i]) != kk)
            return false;
    }
    return true;
}
bool Case3()
{
    ], arr[]);
    ;
    ; i<=n; i++){
         && i!=){
            ], arr[i]) != k){
                tmp[cnt++] = arr[i];
            }
        }
    }
    if(!cnt) return false;
    ) return true;
    ], tmp[]);
    if(kk != k) return false;
    ; i<cnt; i++){
        ], tmp[i]) != kk)
            return false;
    }
    return true;
}
int main(void)
{
    scanf("%d", &n);
    ; i<=n; i++){
        arr[i].x = i;
        scanf("%d", &arr[i].y);
    }
    if(Case1() || Case2() || Case3()) puts("Yes");
    else puts("No");
    ;
}

#431 Div2 Problem B Tell Your World (鸽巢原理 && 思维)的更多相关文章

  1. POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理

    Halloween treats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7644   Accepted: 2798 ...

  2. HDU 1005 Number Sequence【多解,暴力打表,鸽巢原理】

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  3. ACM数论之旅14---抽屉原理,鸽巢原理,球盒原理(叫法不一又有什么关系呢╮(╯▽╰)╭)

    这章没有什么算法可言,单纯的你懂了原理后会不会运用(反正我基本没怎么用过 ̄ 3 ̄) 有366人,那么至少有两人同一天出生(好孩子就不要在意闰年啦( ̄▽ ̄")) 有13人,那么至少有两人同一月 ...

  4. [POJ3370]&[HDU1808]Halloween treats 题解(鸽巢原理)

    [POJ3370]&[HDU1808]Halloween treats Description -Every year there is the same problem at Hallowe ...

  5. Wunder Fund Round 2016 (Div. 1 + Div. 2 combined) F. Double Knapsack 鸽巢原理 构造

    F. Double Knapsack 题目连接: http://www.codeforces.com/contest/618/problem/F Description You are given t ...

  6. POJ3370&amp;HDU1808 Halloween treats【鸽巢原理】

    题目链接: id=3370">http://poj.org/problem?id=3370 http://acm.hdu.edu.cn/showproblem.php?pid=1808 ...

  7. HDU 1205 吃糖果 (鸽巢原理)

    题目链接:HDU 1205 Problem Description HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢 ...

  8. Codeforces Round #648 (Div. 2) E. Maximum Subsequence Value(鸽巢原理)

    题目链接:https://codeforces.com/problemset/problem/1365/E 题意 有 $n$ 个元素,定义大小为 $k$ 的集合值为 $\sum2^i$,其中,若集合内 ...

  9. light oj 1100 - Again Array Queries(暴力,鸽巢原理)

    http://lightoj.com/volume_showproblem.php?problem=1100 刚一看到这题,要询问这么多次,线段树吧,想多了哈哈,根本没法用线段树做. 然后看看数据范围 ...

随机推荐

  1. 【HANA系列】SAP HANA日期函数总结

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA日期函数总结   ...

  2. 【ABAP系列】SAP ABAP中ALV使用HTML的例子

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP中ALV使用HT ...

  3. Canvas入门03-绘制弧线和圆

    绘制弧线的API: context.arc(centerx:number, centery: number, radius: number, startAngle: number, endAngle: ...

  4. Flask框架(五) —— session源码分析

    Flask框架(五) —— session源码分析 目录 session源码分析 1.请求来了,执行__call__方法 2.__call__方法 3.调用__call__方法 3.1.ctx = s ...

  5. django中使用原生的orm

    只有用的时候才能执行

  6. js中 json对象的转化 JSON.parse()

    JSON.parse() 方法用来解析JSON字符串,json.parse()将字符串转成json对象.构造由字符串描述的JavaScript值或对象.提供可选的reviver函数用以在返回之前对所得 ...

  7. 【嵌入式 Linux文件系统】如何使用NFS文件系统

    (1)内核配置 取消选项 General setup-->Initial RAM filesystem and RAM disk (initramfs/initrd) support 进入Fil ...

  8. 教你在 IntelliJ IDEA 中使用 VIM!

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 IdeaVim(下载)插件可以让你在IntelliJ IDEA中键盘敲的飞起. 安装 打开IDEA的设置,在Plugins里 ...

  9. gcc编译工具生成动态库和静态库

    一. 库的分类 1.1. 静态库(.a) 1.1.1. 静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大.所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 1. ...

  10. [BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛)

    [BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛) 题面 我们知道,从区间\([L,R]\)(L和R为整数)中选取N个整数,总共有\((R-L+1)^N\)种方案.求最大公约数 ...