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 ;
}
随机推荐
- wpf staticresource 是不允许向前引用(forward reference)的
不允许向前引用(forward reference)在C/C++中中很常见,即在语法上,未定义变量.类之前,不能使用. 没想到wpf中的wpf staticresource也遵循这种规则.资源字典中, ...
- Python selenium 三种等待方法
1. 强制等待 sleep(xx) 是最简单粗暴的一种办法,不管你浏览器是否加载完了,程序都得等待3秒,3秒一到,继续执行下面的代码,作为调试很有用,不建议总用这种等待方式,严重影响程序执行速度. 代 ...
- java基础知识(10)---包
包:定义包用package关键字. 1:对类文件进行分类管理. 2:给类文件提供多层名称空间. 如果生成的包不在当前目录下,需要最好执行classpath,将包所在父目录定义到classpath变量中 ...
- JavaScript代码存放位置
JavaScript代码存放位置 HTML的head中 HTML的body代码块底部(推荐) 由于Html代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放置 ...
- Http协议以及模拟http请求发送数据
1 为什么要使用http协议 假设我现在有两个客户端浏览器,一个是google,一个是IE浏览器:我现在有两个服务器,一个是tomcat,一个是JBoss;在最初的情况下是:如果google要往tom ...
- MySql数据库数据更新操作其高级应用
数据更新操作有3种:向表中添加数据.修改表中的数据和删除表中的数据. 用来演示的数据表用student.course.sc三个数据表,数据表具体内容在:PHP和MySql数据库,如何获取每个分类的记录 ...
- windows下primer3-py安装
primer3是由怀特黑德生物医学研究所Steve Rozen等人发起的一个自动寡核苷酸分析和设计的开源项目,被广泛应用在分子生物领域.primer3-py是用python语言封装的primer3的A ...
- cc和gcc
cc就是一个链接文件连接到gcc中.只不过cc是unix中常用的编辑工具,而在linux中用的gcc.有一些在unix中写好的程序要放在linux中,所以要指定命令cc为gcc,其实一样.用where ...
- DES加密解决算法
/// <summary> /// DES加密算法 /// sKey为8位或16位 /// </summary> /// <param name="pToEnc ...
- Asp.net Core 启动流程分析
新建的.net core 程序启动本质上是一个控制台应用程序,所以它的入口在Main方法中,所以启动的开始时从Main方法开始. public class Program { public stati ...