给你三根线段判段是否组成了A

条件,两条线段交于端点并且夹角不大于90,第三条线段端点在两条线段上并且划分的大小满足 大:小<4:1

注释很全。(主要是我记不清楚了,,好像过了一个多星期了)

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. typedef long long db;
  5. int inmid(db k1,db k2,db k3){return (k1-k3)*(k2-k3)<=;}// k3 在 [k1,k2] 内
  6. struct point{
  7. ll x,y;
  8. point operator + (const point &k1) const{return (point){k1.x+x,k1.y+y};}
  9. point operator - (const point &k1) const{return (point){x-k1.x,y-k1.y};}
  10. point operator * (db k1) const{return (point){x*k1,y*k1};}
  11. point operator / (db k1) const{return (point){x/k1,y/k1};}
  12. int operator == (const point &k1) const{return x==k1.x&&y==k1.y;}
  13. };
  14. int inmid(point k1,point k2,point k3){return inmid(k1.x,k2.x,k3.x)&&inmid(k1.y,k2.y,k3.y);}
  15. ll cross(point k1,point k2){return k1.x*k2.y-k1.y*k2.x;}
  16. ll dot(point k1,point k2){return k1.x*k2.x+k1.y*k2.y;}
  17. struct line {
  18. // p[0]->p[1]
  19. point p[];
  20. line(point k1, point k2) {p[] = k1;p[] = k2;}
  21. point &operator[](int k) { return p[k]; }
  22. };
  23. ll cross(line a,line b){return cross(a[]-a[],b[]-b[]);}
  24. ll dot(line a,line b){return dot(a[]-a[],b[]-b[]);}
  25. int t;point p[];
  26. vector<line> l;
  27. bool check(ll x,ll y){if(x*<y)return ;if(x*>y*)return ;return ;}
  28. bool slove(line a,line b,line c){
  29. if(a[]==b[])swap(a[],a[]),swap(b[],b[]);
  30. if(a[]==b[])swap(a[],a[]);
  31. if(a[]==b[])swap(b[],b[]);
  32. if(!(a[]==b[]))return ;//判相交
  33. if(cross(a,b)==)return ;//重合
  34. if(dot(a,b)<)return ;//夹角
  35. if(cross(a[]-a[],c[]-a[])==&&cross(b[]-b[],c[]-b[])==){}
  36. else swap(c[],c[]);
  37. if(!(cross(a[]-a[],c[]-a[])==&&cross(b[]-b[],c[]-b[])==))return ;//共线
  38. if(!inmid(a[],a[],c[]))return ;//在线段上
  39. if(!inmid(b[],b[],c[]))return ;
  40. //比例
  41. if(!check(abs(a[].x-c[].x),abs(a[].x-a[].x)))return ;
  42. if(!check(abs(a[].y-c[].y),abs(a[].y-a[].y)))return ;
  43. if(!check(abs(b[].x-c[].x),abs(b[].x-b[].x)))return ;
  44. if(!check(abs(b[].y-c[].y),abs(b[].y-b[].y)))return ;
  45. return ;
  46. }
  47.  
  48. int main(){
  49. scanf("%d",&t);
  50. while(t--){
  51. l.clear();
  52. for(int i=;i<=;i++)scanf("%lld%lld",&p[i].x,&p[i].y);
  53. l.push_back({p[],p[]});l.push_back({p[],p[]});l.push_back({p[],p[]});
  54. if(slove(l[],l[],l[]))cout<<"YES"<<endl;
  55. else if(slove(l[],l[],l[]))cout<<"YES"<<endl;
  56. else if(slove(l[],l[],l[]))cout<<"YES"<<endl;
  57. else cout<<"NO"<<endl;
  58. }
  59. }
  60. /**
  61. 1
  62. 0 0 0 6
  63. 0 6 2 -4
  64. 1 1 0 1
  65. */

codeforces 13 b的更多相关文章

  1. codeforces 13 D

    给你500个红点和蓝点,让你找多少点红点构成的三角形里没有蓝点. 巧妙啊!我们考虑一个很远位置的点,不妨设这个为O,然后n^2枚举红点,考虑Oij里面蓝点的个数, 然后 对于 ijk这个三角形,我们可 ...

  2. Codeforces Beta Round #13 C. Sequence (DP)

    题目大意 给一个数列,长度不超过 5000,每次可以将其中的一个数加 1 或者减 1,问,最少需要多少次操作,才能使得这个数列单调不降 数列中每个数为 -109-109 中的一个数 做法分析 先这样考 ...

  3. Codeforces Beta Round #13 E. Holes 分块暴力

    E. Holes Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/13/problem/E Des ...

  4. Educational Codeforces Round 13 D:Iterated Linear Function(数论)

    http://codeforces.com/contest/678/problem/D D. Iterated Linear Function Consider a linear function f ...

  5. Educational Codeforces Round 13 D. Iterated Linear Function (矩阵快速幂)

    题目链接:http://codeforces.com/problemset/problem/678/D 简单的矩阵快速幂模版题 矩阵是这样的: #include <bits/stdc++.h&g ...

  6. 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/ ...

  7. Educational Codeforces Round 13 E. Another Sith Tournament 状压dp

    E. Another Sith Tournament 题目连接: http://www.codeforces.com/contest/678/problem/E Description The rul ...

  8. Educational Codeforces Round 13 D. Iterated Linear Function 水题

    D. Iterated Linear Function 题目连接: http://www.codeforces.com/contest/678/problem/D Description Consid ...

  9. Educational Codeforces Round 13 C. Joty and Chocolate 水题

    C. Joty and Chocolate 题目连接: http://www.codeforces.com/contest/678/problem/C Description Little Joty ...

随机推荐

  1. android TextView加载html 过滤所有标签,保留换行标签

    情景: TextView加载后端接口获取到的html富文本 遇到的问题: 客户端通过接口取到的数据如下: <p style="margin-top: 0px; margin-botto ...

  2. IAR 关于C++几个内存的使用及释放的问题

    由于之前工作中常常遇到,但是遇到的时候工作总是要求比较紧急,没有那么多时间细细寻找有效的解决办法.现在了解到了一些,记录一些. 1. string vector 都是增量在堆里,所以只要有增量都是在堆 ...

  3. Python2.7与3.6的一些区别

    2.7实现了一部分3的功能, 更早版本可能会稍稍涉及一点 首先是关键字的差别 python3.6 import keyword print(keyword.kwlist) ['False', 'Non ...

  4. 算法——八皇后问题(eight queen puzzle)之回溯法求解

    八皇后谜题是经典的一个问题,其解法一共有种! 其定义: 首先定义一个8*8的棋盘 我们有八个皇后在手里,目的是把八个都放在棋盘中 位于皇后的水平和垂直方向的棋格不能有其他皇后 位于皇后的斜对角线上的棋 ...

  5. Google 以 Flutter 作为原生突破口,移动端即将统一了

    Android 的前生今世 Android 系统 Android系统作为全球第一大系统,基于 Java 开发的移动端有着诸多的性能优势. 2018年前 H5 的性能瓶颈和 RN 的停更 导致业界对跨平 ...

  6. java sigar获取本地信息以及org.hyperic.sigar.SigarException: The device is not ready报错解决

    window下,使用java sigar 获取磁盘使用率,cpu使用率以及内存使用情况等信息时. 一:首先需要下载jar包和相关文件 sigar-1.6.4.zip 如果想了解更多可以去 sigar官 ...

  7. MySQL-mysql 8.0.11安装教程

    网上的教程有很多,基本上大同小异.但是安装软件有时就可能因为一个细节安装失败.我也是综合了很多个教程才安装好的,所以本教程可能也不是普遍适合的. 安装环境:win7 1.下载zip安装包: MySQL ...

  8. 如何配置adb环境变量

    如何配置adb环境变量? 1.我的电脑---控制面板---高级系统设置 2.点击[高级系统设置],弹出系统属性的弹框, 3.点击[环境变量],弹出环境变量弹框,新建一个系统变量,命名为Android ...

  9. 在.Net Core WebAPI下给Swagger增加导出离线文档功能

    一丶前言 最近刚接触到Swagger,在github上下载了它的源码和demo学习了一遍,发现这个组件非常好用,不过不足的是它没有导出离线文档的功能,于是乎我就想给它加一个导出功能 Swagger G ...

  10. codeforces / project Euler 泛做

    目录 PE 15 PE 76 PE 90 PE 577 PE 97 PE 364(坑) 待做 发现这个题库,很有意思,趁着还没有学习微积分,看不了书,赶快从头开始刷,所以都是一些简单的题目,即时简单, ...