C - Two Squares

思路:

点积叉积应用

代码:

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pii pair<int, int>
#define piii pair<int,pii>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//headstruct P {double x, y;P(){}P(double x, double y):x(x), y(y) {}P operator - (P p) {return P(x-p.x, y-p.y);}double cross(P p) {return x*p.y - y*p.x;}double dot(P p) {return x*p.x + y*p.y;}
};
typedef P Vector;
bool on_seg(P p, Vector a, Vector b) {if((a-p).cross(b-p) == 0 && (a-p).dot(b-p) <= 0) return true;else return false;
}
double area2(Vector a, Vector b, Vector c) {return (b-a).cross(c-a);
}
bool intersect(Vector a, Vector b, Vector c, Vector d) {if(area2(a, c, d) == 0 && area2(b, c, d) == 0 && !on_seg(a, c, d) && !on_seg(b, c, d)|| area2(a, c, d) * area2(b, c, d) > 0|| area2(c, a, b) * area2(d, a, b) > 0) return false;else return true;
}
pii a[4], b[4];
int main() {for (int i = 0; i < 4; i++) scanf("%d %d", &a[i].fi, &a[i].se);for (int i = 0; i < 4; i++) scanf("%d %d", &b[i].fi, &b[i].se);for (int i = 0; i < 4; i++) {for (int j = 0; j < 4; j++) {Vector aa(a[i].fi, a[i].se);Vector bb(a[(i+1)%4].fi, a[(i+1)%4].se);Vector c(b[j].fi, b[j].se);Vector d(b[(j+1)%4].fi, b[(j+1)%4].se);if(intersect(aa, bb, c, d)) return 0*puts("YES");}}for (int i = 0; i < 4; i++) {int x = 0, y = 0, xx = 0, yy = 0;for (int j = 0; j < 4; j++) {Vector A(a[i].fi, a[i].se), B(b[j].fi, b[j].se), C(b[(j+1)%4].fi, b[(j+1)%4].se);if(area2(A, B, C) > 0) x++;else if(area2(A, B, C) < 0)y++;else x++, y++;Vector AA(b[i].fi, b[i].se), BB(a[j].fi, a[j].se), CC(a[(j+1)%4].fi, a[(j+1)%4].se);if(area2(AA, BB, CC) > 0) xx++;else if(area2(AA, BB, CC) < 0) yy++;else xx++, yy++;}if(x == 4 || y == 4 || xx == 4 || yy == 4) return 0*puts("YES");}puts("NO");return 0;
}

转载于:https://www.cnblogs.com/widsom/p/9277678.html

Codeforces 994 C - Two Squares相关推荐

  1. CodeForces - 11C How Many Squares?【DFS】

    题目链接:https://codeforces.com/contest/11/problem/C 来自洛谷题解的做法,先找第一类正方形,再找第二类正方形,dfs找联通块并全部清除,判断1的数量是否构成 ...

  2. Check It Again:论文整理

    蕴含简介 文本蕴含:文本间的推理关系,又称为文本蕴含关系,作为一种基本的文本间语义联系,广泛存在于自然语言文本中.简单的来说文本蕴含关系描述的是两个文本之间的推理关系,其中一个文本作为前提,另一个文本 ...

  3. vpc2007_了解VPC端点

    vpc2007 If you are going to do one thing with your network traffic, it should be using https. But yo ...

  4. 【CodeForces - 124D】Squares (旋转坐标系,计算几何,思维)

    题干: You are given an infinite checkered field. You should get from a square (x1; y1) to a square (x2 ...

  5. Codeforces Round #161 (Div. 2) B. Squares

    题目:http://codeforces.com/contest/263/problem/B 在第一象限画n个以原点为顶点,(ai,ai)为对角顶点的正方形 输出任意一个k为顶点的正方形 思路:任意一 ...

  6. Codeforces 993A. Two Squares(暴力求解)

    解题思路(暴力解法) 平行于x轴的正方形和与x轴成45度倾斜的正方形相交的点中必定有整数点.即若两正方形相交,必定存在整数i,j,使(i,j)同时属于两个正方形. 我们把两个正方形中的整数点都找出来, ...

  7. Codeforces Round #243 (Div. 1)——Sereja and Squares

    题目链接 题意: 给n个点,求能组成的正方形的个数. 四边均平行与坐标轴 大神的分析: 经典题 我们考虑每一种x坐标,显然仅仅有<= sqrt{N}个x坐标出现了> sqrt{N}次,我们 ...

  8. CodeForces - 123B Squares(简单几何+旋转坐标系)

    题目链接:点击查看 题目大意:给出一个无限大的二维坐标平面,现在有一些坏点,规定: 满足以上两条件之一的点即为坏点,现在问最少经过多少个坏点的情况下,可以从起点到达终点 题目分析:一开始没想到坏点是如 ...

  9. Codeforces 898E Squares and not squares

    题目大意 给定 $n$($n$ 是偶数,$2\le n\le 2\times 10^{5}$)个非负整数 $a_1,\dots, a_n$($a_i\le 10^9$). 要求将其中 $n/2$ 个数 ...

最新文章

  1. 2017年6月份学习总结,读书《5个高效工作习惯,让你跟「瞎忙」划清界限》
  2. centos7.4安装图形界面及报错处理
  3. inline-block清除空隙2
  4. Android用户界面 UI组件--TextView及其子类(二) Button,selector选择器,sharp属性
  5. mysql默认密码是多少_192.168.3.1默认登录密码是多少【详细介绍】
  6. 如何用Python批量获取生意参谋商品来源信息
  7. 22-5 论如何将标准中国地图矢量化并且导入arcgis中
  8. 网络连接状态断开服务器无响应,解决SSH自动断线,无响应的问题。
  9. python回复qq消息,python自动化实现自动回复QQ消息
  10. groovy使用场景
  11. html图片自动在div里放大,HTML5+CSS3实现图片的放大/缩小
  12. 介绍 json_介绍
  13. javascript开发微信小程序,怎么把手写稿子转换成word,如何快速把手稿转换为电子稿
  14. JAVA record
  15. 成都百知教育:前4月阿拉山口口岸出口跨境电商包同比增长307%
  16. WEB前端整套教程html+divcss+javascript+jquery+html5-孙琪峥-专题视频课程
  17. java中发送邮件,如何设置发件人名称、昵称
  18. 目前主要的计算机汉字输入方法是什么,详解常见的汉字的输入方法
  19. 快播倒下了,网盘站起来
  20. MoPub sdk集成

热门文章

  1. L1-052 2018我们要赢-PAT团体程序设计天梯赛GPLT
  2. 蓝桥杯 ADV-211 算法提高 2-2整数求和
  3. PAT 1069. 微博转发抽奖(20)-乙级
  4. ios支付 选择货币_iOS开发中金钱货币的计算问题
  5. Oracle diag目录下面的大量trace trc文件
  6. 专访京东副总裁翁志:全方位解读 CNCC 2018「数据开创商业新生态」技术论坛 | CNCC 2018...
  7. UVa 401 - Palindromes
  8. 在Windows上编译和调试CoreCLR
  9. 指针数组与数组指针的区别
  10. hdu 3905(dp)