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

题目是给出n个点,要求把这n个点分成两组,每组都是一条直线。而且这两组不能为空,还要是平行的。

思路:

对于前3个点来说,他们不可能各自一组,因为只能分成2组。

他们有可能同时一组,或者两个点在一组。

这一共就4种情况,然后O(n)判断即可

#include <bits/stdc++.h>
#define IOS ios::sync_with_stdio(false)
using namespace std;
#define inf (0x3f3f3f3f)
typedef long long int LL;
const int maxn = 1e3 + ;
struct coor {
LL x, y;
} a[maxn], b[maxn];
int vis[maxn], DFN = ;
int n;
bool same(int i, int j, int k) {
return (a[j].y - a[i].y) * (a[k].x - a[i].x) == (a[k].y - a[i].y) * (a[j].x - a[i].x);
}
bool init(int one, int two) {
++DFN;
vis[one] = vis[two] = DFN;
for (int i = ; i <= n; ++i) {
if (vis[i] == DFN) continue;
if (same(one, two, i)) {
vis[i] = DFN;
}
}
int lenb = ;
for (int i = ; i <= n; ++i) {
if (vis[i] == DFN) continue;
if (lenb == ) b[++lenb] = a[i];
else {
b[++lenb] = a[i];
if ((a[two].y - a[one].y) * (b[lenb].x - b[].x) != (b[lenb].y - b[].y) * (a[two].x - a[one].x)) {
return false;
}
}
}
return lenb != ;
}
void work() {
scanf("%d", &n);
for (int i = ; i <= n; ++i) {
scanf("%I64d", &a[i].y);
a[i].x = i;
}
for (int i = ; i <= ; ++i) {
for (int j = i + ; j <= ; ++j) {
if (init(i, j)) {
printf("Yes\n");
return;
}
}
}
printf("No\n");
} int main() {
#ifdef local
freopen("data.txt", "r", stdin);
// freopen("data.txt", "w", stdout);
#endif
work();
return ;
}

随机推荐

  1. 洛谷【P1601】A+B Problem(高精)

    题目传送门:https://www.luogu.org/problemnew/show/P1601 高精度加法板子.我们灵性地回忆一波小学学加法列竖式的场景(从\(6\)岁开始口算从未打过草稿的大佬请 ...

  2. DNS Doctoring

    NAT的应用可以让路由器在不同地址域内路由数据包.一个暴露在外的应用服务器,通常同时拥有了内网和外网的IP地址.这在DNS解析时可能带来麻烦. 根据DNS服务器的部署位置和配置,对同一内网中的应用服务 ...

  3. Ruby代码块(Block)

    1.什么是代码块 在Ruby中,{}或do...end之间的代码是一个代码块.代码块只能出现在一个方法的后边,它紧接在方法最后一个参数的同一行上,由yield关键字调用.例如: [1,2,3,4,5] ...

  4. WPF Invoke与BeginInvoke的区别

    Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托. Control.BeginInvoke 方法 (Delegate) :在创建控件的基础句 ...

  5. Android精品源码分享第四波袭来,免费下载!

    今天又汇总了几个优质的源码分享出来给大家!希望可以帮到需要的朋友~1.Android实现-带动画的饼图控件 分享的是Android技术相关的源码内容,希望对大家的Android学习有帮助.带动画的饼图 ...

  6. springmvc chrome jsonviewer 一起请求 重复提提交 controller重复执行 2次执行

    情况一: springmvc chrome jsonviewer 一起请求 重复提提交 controller重复执行 2次执行 Chrome浏览器地址栏访问接口url,重复请求问题解决   不论刷新还 ...

  7. SSDB VS redis

    现在有不少团队开始使用了一个新型高效的 NoSQL数据库 - SSDB,如 京东.唱吧 …… SSDB 官网的定义 一个高性能的支持丰富数据结构的 NoSQL 数据库,用于替代 Redis 官网 ht ...

  8. jmeter响应结果乱码问题

    问题分析 当响应数据或响应页面没有设置编码时,jmeter会按照jmeter.properties文件中,sampleresult.default.encoding设置的格式解析 默认ISO-8859 ...

  9. c++中的const关键字的理解

    看effective c++第二版推荐使用const,少用define.今天才发现发现这远远不够. #define定义的常量在预处理替换,debug的时候无法打印宏的,这种常量设置是有缺陷的, con ...

  10. boost编译BUG

    linux GCC环境,boost在编译时未加-fPIC参数,导致如果有共享库使用boost静态库,会报如下错误:relocation R_X86_64_32 against `a local sym ...