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 ...
随机推荐
- python3字符串
Python3 字符串 Python字符串运算符 + 字符串连接 a + b 输出结果: HelloPython * 重复输出字符串 a*2 输出结果:HelloHello [] 通过索引获取字符串中 ...
- Numerical Analysis
PART1 <求解方程> 1,二分法 def bisect(f,a,b,TOL=0.000004): u_a = a u_b = b while(u_b-u_a)/2.0 > TO ...
- 记录一个nginx的配置
rt #user xiaoju; worker_processes ; #error_log logs/error.log notice; #error_log logs/error.log debu ...
- django-auth组件
auth组件 一.auth模块简介 auth模块是django自带的用户认证模块,包含了身份验证和权限管理两部分. 身份验证用于核实某个用户是否合法,权限管理用于决定一个合法用户有哪些权限 默认情况下 ...
- STM32F0使用LL库实现Modbus通讯
在本次项目中,限于空间要求我们选用了STM32F030F4作为控制芯片.这款MCU不但封装紧凑,而且自带的Flash空间也非常有限,所以我们选择了LL库实现.本篇将说明基于LL实现USART通讯. 1 ...
- 基于spark-streaming实时推荐系统
基于spark-streaming实时推荐系统(一) 基于spark-streaming实时推荐系统( 二) 基于spark-streaming实时推荐系统(三)
- <转>Go语言TCP Socket编程
授权转载: Tony Bai 原文连接: https://tonybai.com/2015/11/17/tcp-programming-in-golang/ Golang的主要 设计目标之一就是面向大 ...
- linux命令详解之df命令
df命令概述df命令作用是列出文件系统的整体磁盘空间使用情况.可以用来查看磁盘已被使用多少空间和还剩余多少空间. df命令显示系统中包含每个文件名参数的磁盘使用情况,如果没有文件名参数,则显示所有当前 ...
- Docker使用docker-compose.yml构建Asp.Net Core和Mysql镜像并与Mysql数据库通信
version: '3' services: mycore01: build: context: . container_name: 'mycore01' #自定义容器名 dockerfile ...
- notes for lxf(五)
类和实例的绑定方法和属性 实例绑定 obj.func = func obj.func(obj, &argv) obj.func = MethodType(func, obj) 第一个参数是方 ...