codeforces 961 D. Pair Of Lines (几何,向量叉乘,三点共线)
题目连接 codeforces 961.D
题意:
给出若干个点,问是否能画出两条线,保证这些点都在这两条线上
题解:
两点确定一条直线,找出一点不在这条直线上,然后枚举这三个点两两在一条直线上,如果有出现第5个点不在这两条直线上(因为出现第4个点时,虽然不在第一条直线上,但是可以和第3个不在第一条直线上的点组成第二条直线),输出NO,否则输出YES
向量叉乘 等于 0 ,三点在同一条直线上 (x1 * y2) - (x2 * y1)
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
struct node{ll x, y;
}a[100005];
int n;
ll cross(int d, int b, int c){ // 向量叉乘return (a[d].x-a[b].x) * (a[c].y-a[b].y) - (a[c].x-a[b].x) * (a[d].y-a[b].y);
}
bool judge(int a, int b){int c = -1, d = -1;for(int i = 1; i <= n; i++){if(cross(a, b, i) != 0){if(c == -1){c = i; // 出现第3个点不在第一条直线上}else if(d == -1){d = i; // 出现第4个点不在第一条直线上}else if(cross(c, d, i) != 0){ // 第三个和第四个点组成第二条直线return false; // 都不在这两条直线上,这种情况不成立}}}return true;
}
int main(){int c = -1;cin >> n;for(int i = 1; i <= n; i++){cin >> a[i].x >> a[i].y;}for(int i = 3; i <= n; i++){if(cross(1, 2, i) != 0){c = i; // 出现不在第一条直线上的点break;}}if(c == -1){ // 如果没有出现,说明全部点都在一条直线上,符合题意cout << "YES" << endl;}else if(judge(1, 2) || judge(1, c) || judge(2, c)){ // 枚举三个点两两在一条直线上cout << "YES" << endl;}else{cout << "NO" << endl;}return 0;
}
codeforces 961 D. Pair Of Lines (几何,向量叉乘,三点共线)相关推荐
- CodeForces - 1324 D. Pair of Topics 思维+多解法
CodeForces - 1324 D. Pair of Topics 原题地址: http://codeforces.com/contest/1324/problem/D 基本题意: 给你一个数组, ...
- 2014软专高级程序语言T2(用向量叉乘判断点与三角形的位置关系)
编写程序,输入A,B,C,D四个点的坐标,假设A,B,C三点可以构成一个三角形,判断D点是否落在三角形内. 解题思路: 假设三角形的三个点按照顺时针(或者逆时针)顺序是A,B,C.对于某一点P,求出三 ...
- Pipe HDU - 2150(判断线段相交+向量叉乘线代详解)
题目: 经过激烈的争夺,Lele终于把那块地从Yueyue的手里抢了回来.接下来,Lele要开始建造他的灌溉系统. 通过咨询Lele的好友--化学系的TT,Lele决定在田里挖出N条沟渠,每条沟渠输送 ...
- python如何叉乘_向量点乘与向量叉乘
向量的点积与向量的叉乘应该是高中时解析几何的知识,很久没有用,已经回忆不起来了,最近接触到了,一脸茫然,在此复习下: 1. 向量的点乘 1.1 释义 向量的点乘,也叫向量的内积.数量积,对两个向量执行 ...
- NLP︱高级词向量表达(三)——WordRank(简述)
如果说FastText的词向量在表达句子时候很在行的话,GloVe在多义词方面表现出色,那么wordRank在相似词寻找方面表现地不错. 其是通过Robust Ranking来进行词向量定义. 相关p ...
- 用MATLAB绘制两个圆相切,教您用几何绘图工具画三个两两相切的圆
圆与圆的位置关系有:相离,外切,相交,内切,内含,它们之间的位置是由圆心距与两半径的长度来确定的.那么如果想画出三个两两相切的圆,要怎样画呢?这时我们可以利用几何画板这个绘图工具,画出既标准又美观的图 ...
- 两向量叉乘的计算公式_高中数学知识背景下对向量叉乘运算的探讨(向东来)
c b a θ 高中数学知识背景下对向量叉乘运算的探 讨 在高中数学的学习中,同学们接触到向量的概念,并了解其性质.线性运算.坐标表 示.数量积以及在实际问题中的应用.在此基础上,可进一步深化,引入向 ...
- 向量叉乘算子、点乘算子与矩阵运算的关系
文章目录 向量叉乘 运算测试 结论 矩阵与向量点乘 变量 算子 测试 结论 向量叉乘 (a×b)×c=b(a⋅c)−a(b⋅c)(a×b)×c = b(a·c) - a(b·c)(a×b)×c=b(a ...
- codeforces 618 C. Constellation(三角形,三点共线)
题目链接 codeforces 618 C 题意 给出n个点,取三角形,且三角形内不包含其他点 题解: 先对点坐标进行排序,X 或 Y都可以,意思是在边界取三角形,尽可能不接触其他点,如果构不成三角形 ...
最新文章
- fragment中文网_更新 · React Native 中文网
- bootstrap 栅栏系统
- php 二叉树判断节点的位置,PHP实现判断二叉树是否对称的方法
- python教程:Json模块中dumps、dump、loads、load函数用法讲解
- 王道计算机考研 计算机组成原理 第二章、数据的表示和运算
- Delphi中的各种路径
- 《Java技术》第九次作业计科1501赵健宇-IO
- hp-ux mysql_HP-UX 安装MySQL
- html进阶css(5)
- 反爬虫策略之----UserAgent设置与随机生成
- 从B站源码里探索推荐算法的奥义
- 一盘商家一盘货,拼多多为什么比手淘便宜?
- 奋斗5年,从月薪3500到700万(不止谈赚钱,故事也很感人)
- 使用循环结构输出数字三角形图形
- Revel框架快速入门教程
- 【LeetCode】975. Odd Even Jump 解题报告(C++)
- Coder往事之: 一些炫酷的特效 for web 前端 (一)
- MySQL技能树学习总结
- Urchin.exe使用说明
- 一个程序员如何给LPL发弹幕加油