codeforces 13 b
给你三根线段判段是否组成了A
条件,两条线段交于端点并且夹角不大于90,第三条线段端点在两条线段上并且划分的大小满足 大:小<4:1
注释很全。(主要是我记不清楚了,,好像过了一个多星期了)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long long db;
int inmid(db k1,db k2,db k3){return (k1-k3)*(k2-k3)<=;}// k3 在 [k1,k2] 内
struct point{
ll x,y;
point operator + (const point &k1) const{return (point){k1.x+x,k1.y+y};}
point operator - (const point &k1) const{return (point){x-k1.x,y-k1.y};}
point operator * (db k1) const{return (point){x*k1,y*k1};}
point operator / (db k1) const{return (point){x/k1,y/k1};}
int operator == (const point &k1) const{return x==k1.x&&y==k1.y;}
};
int inmid(point k1,point k2,point k3){return inmid(k1.x,k2.x,k3.x)&&inmid(k1.y,k2.y,k3.y);}
ll cross(point k1,point k2){return k1.x*k2.y-k1.y*k2.x;}
ll dot(point k1,point k2){return k1.x*k2.x+k1.y*k2.y;}
struct line {
// p[0]->p[1]
point p[];
line(point k1, point k2) {p[] = k1;p[] = k2;}
point &operator[](int k) { return p[k]; }
};
ll cross(line a,line b){return cross(a[]-a[],b[]-b[]);}
ll dot(line a,line b){return dot(a[]-a[],b[]-b[]);}
int t;point p[];
vector<line> l;
bool check(ll x,ll y){if(x*<y)return ;if(x*>y*)return ;return ;}
bool slove(line a,line b,line c){
if(a[]==b[])swap(a[],a[]),swap(b[],b[]);
if(a[]==b[])swap(a[],a[]);
if(a[]==b[])swap(b[],b[]);
if(!(a[]==b[]))return ;//判相交
if(cross(a,b)==)return ;//重合
if(dot(a,b)<)return ;//夹角
if(cross(a[]-a[],c[]-a[])==&&cross(b[]-b[],c[]-b[])==){}
else swap(c[],c[]);
if(!(cross(a[]-a[],c[]-a[])==&&cross(b[]-b[],c[]-b[])==))return ;//共线
if(!inmid(a[],a[],c[]))return ;//在线段上
if(!inmid(b[],b[],c[]))return ;
//比例
if(!check(abs(a[].x-c[].x),abs(a[].x-a[].x)))return ;
if(!check(abs(a[].y-c[].y),abs(a[].y-a[].y)))return ;
if(!check(abs(b[].x-c[].x),abs(b[].x-b[].x)))return ;
if(!check(abs(b[].y-c[].y),abs(b[].y-b[].y)))return ;
return ;
} int main(){
scanf("%d",&t);
while(t--){
l.clear();
for(int i=;i<=;i++)scanf("%lld%lld",&p[i].x,&p[i].y);
l.push_back({p[],p[]});l.push_back({p[],p[]});l.push_back({p[],p[]});
if(slove(l[],l[],l[]))cout<<"YES"<<endl;
else if(slove(l[],l[],l[]))cout<<"YES"<<endl;
else if(slove(l[],l[],l[]))cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
/**
1
0 0 0 6
0 6 2 -4
1 1 0 1
*/
codeforces 13 b的更多相关文章
- codeforces 13 D
给你500个红点和蓝点,让你找多少点红点构成的三角形里没有蓝点. 巧妙啊!我们考虑一个很远位置的点,不妨设这个为O,然后n^2枚举红点,考虑Oij里面蓝点的个数, 然后 对于 ijk这个三角形,我们可 ...
- Codeforces Beta Round #13 C. Sequence (DP)
题目大意 给一个数列,长度不超过 5000,每次可以将其中的一个数加 1 或者减 1,问,最少需要多少次操作,才能使得这个数列单调不降 数列中每个数为 -109-109 中的一个数 做法分析 先这样考 ...
- Codeforces Beta Round #13 E. Holes 分块暴力
E. Holes Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/13/problem/E Des ...
- Educational Codeforces Round 13 D:Iterated Linear Function(数论)
http://codeforces.com/contest/678/problem/D D. Iterated Linear Function Consider a linear function f ...
- Educational Codeforces Round 13 D. Iterated Linear Function (矩阵快速幂)
题目链接:http://codeforces.com/problemset/problem/678/D 简单的矩阵快速幂模版题 矩阵是这样的: #include <bits/stdc++.h&g ...
- 2016-2017 CT S03E06: Codeforces Trainings Season 3 Episode 6(8/13)
2016-2017 CT S03E06: Codeforces Trainings Season 3 Episode 6 比赛连接: http://codeforces.com/gym/101124/ ...
- Educational Codeforces Round 13 E. Another Sith Tournament 状压dp
E. Another Sith Tournament 题目连接: http://www.codeforces.com/contest/678/problem/E Description The rul ...
- Educational Codeforces Round 13 D. Iterated Linear Function 水题
D. Iterated Linear Function 题目连接: http://www.codeforces.com/contest/678/problem/D Description Consid ...
- Educational Codeforces Round 13 C. Joty and Chocolate 水题
C. Joty and Chocolate 题目连接: http://www.codeforces.com/contest/678/problem/C Description Little Joty ...
随机推荐
- 2018-2019-2 20165325 《网络对抗技术》 Exp6 信息搜集与漏洞扫描
2018-2019-2 20165325 <网络对抗技术> Exp6 信息搜集与漏洞扫描 实验内容(概要) 1 各种搜索技巧的应用: 2 DNS IP注册信息的查询: 3 基本的扫描技术 ...
- kruskal重构树学习笔记
\(kruskal\) 重构树学习笔记 前言 \(8102IONCC\) 中考到了,本蒟蒻不会,所以学一下. 前置知识 \(kruskal\) 求最小(大)生成树,树上求 \(lca\). 算法详 ...
- 《ASCE1885的信息安全》のCryptoAPI---密钥的产生和交换函数
在公开密码算法的前提下,数据的安全取决于密钥.因此,密钥的产生.销毁.交换(分发)是数据保密工作中的重要部分. CryptoAPI密钥产生和交换函数主要有生成密钥函数CryptGenKey.派生密钥函 ...
- 【easy】784. Letter Case Permutation
Examples: Input: S = "a1b2" Output: ["a1b2", "a1B2", "A1b2", ...
- QT windeployqt
qt发布release版本时需要打包一些dll,需要哪些呢?请看截图: 在qt的安装包下找到这些文件,放在release文件夹下即可,当然有些时候也会需要一些其他的,比如含有串口的程序还需要加入Qt5 ...
- python学习:一
第三章:实践题作业 1.编写一个名为 collatz()的函数,它有一个名为 number 的参数.如果参数是偶数,那么 collatz()就打印出 number // 2, 并返回该值.如果 num ...
- 【算法】Attention is all you need
Transformer 最近看了Attention Is All You Need这篇经典论文.论文里有很多地方描述都很模糊,后来是看了参考文献里其他人的源码分析文章才算是打通整个流程.记录一下. T ...
- U盘安装Mac OS X要点
1.启动U盘必须比系统磁盘小,因为制作启动U盘,U盘很可能被当成系统盘.系统安装时,发现系统盘比U盘小,很可能提示安装失败. 2.制作启动U盘.详情查看官网:https://support.apple ...
- zabbix_agentd客户端安装与配置(windows操作系统)
zabbix_agentd客户端安装与配置(windows操作系统) ********** 客户端操作 ********** 标注:监控zabbix_agentd客户端安装对象是win s ...
- AI阅粒app
项目架构 前端 lve 后端 php+flask 实现的功能 在app底栏上有首页,标签,评论,和我的.能够通过首页浏览文章,通过标签查看对应的文章,每个标签里边的文章底下都有对应的评论数,浏览人数, ...