B. Tell Your World
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 ;
}
随机推荐
- 记一次肉机事件--yam
背景: 研发同事反应他自己的测试机器,有一个yum程序占用cpu很多,接近100%,然后他就将这个程序kill了.我一看他给我发的截图,原来不是“yum”,而是“yam”,第一反应就是让人当肉机了.上 ...
- Poj 3903 Stock Exchange(LIS)
一.Description The world financial crisis is quite a subject. Some people are more relaxed while othe ...
- js函数篇
1.闭包函数,作用:不污染全局变量, 定义:与外界隔离的独立作用域被称为闭包,使用函数实现该功能称为函数闭包: 写法: (function(){ function sayHello(){ conso ...
- jquery 中post 、get的同步问题,从外部获取返回数据
解决方法1: 在全局设置: $.ajaxSetup({ async : false }); $.ajaxSetup({ async : false }); 然后再使用post或get方法 $.get( ...
- C语言计算日期间隔天数的经典算法解析
#include <stdio.h> #include <stdlib.h> int day_diff(int year_start, int month_start, int ...
- VisualGDB系列1:VisualGDB总体概述
根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文总体介绍VisualGDB能给你带来 ...
- JavaScript原型模式(prototype)
1.原型是一个对象,其他对象可以通过它实现属性的继承所有对象在默认的情况下都有一个原型,因为原型的本身也是对象,所以一个类的真正原型是被类的内部[prototype]属性所指出.每个函数都有一个属性叫 ...
- k8s 基础 pod创建流程
Pod是Kubernetes中最基本的部署调度单元,可以包含container,逻辑上表示某种应用的一个实例.例如一个web站点应用由前端.后端及数据库构建而成,这三个组件将运行在各自的容器中,那么我 ...
- Windchill 配置LOG文件,使开发中的代码能显示打印的信息
如开发代码的类HomeLogic.java, 包路径在pnt.report.home 需求:需监控此类的打印数据 方法:配置D:\ptc\Windchill_10.1\Windchill\codeba ...
- Ajax 执行流程 有用 一点
l 1.1使用JavaScript获得浏览器内置的AJAX引擎(XMLHttpRequest对象) l 1.2 通过AJAX引擎确定请求路径和请求参数 l 1.3 通知AJAX引擎发送请求 l AJA ...