[Codeforces 32E] Hide-and-Seek
Brief Intro:
给两个人的坐标,一堵墙和一面镜子,询问两人能否看见对方
Solution:
一道以分类讨论为主的计算几何题,
分别讨论两人坐标连线是否经过墙/镜子即可,
难点在于如何求出点x关于线段[A,B]的对称点:
point sym(point x,point A,point B){return *dot(A,B)/dot(B,B)*B-A+x;}
以上给出一种方法:将线段[x,A]延长一倍,求出线段[x,x']的向量,再行加减即可
Code:
#include <bits/stdc++.h>
using namespace std;
typedef complex<double> point;
point a,b,w1,w2,m1,m2;
point read(){double x,y;cin>>x>>y;return point(x,y);}
double det(point a,point b){return imag(a*conj(b));}
double dot(point a,point b){return real(a*conj(b));}
bool on_seg(point x,point L,point R){return det(L-x,R-x)== && dot(L-x,R-x)<=;}
bool seg_cross(point a,point b,point c,point d)
{
double s1=det(c-a,b-a)*det(b-a,d-a);
double s2=det(a-c,d-c)*det(d-c,b-c);
if(s1< || s2<) return false;
if(s1== && s2==) return on_seg(c,a,b) || on_seg(d,a,b);
return true;
}
point sym(point x,point A,point B){return *dot(A,B)/dot(B,B)*B-A+x;}
bool check()
{
if(seg_cross(a,b,m1,m2))
return !seg_cross(a,b,w1,w2) && det(b-a,m2-m1)==;
else if(seg_cross(a,b,w1,w2))
{
point A=sym(m1,a-m1,m2-m1),B=sym(m1,b-m1,m2-m1);
return (seg_cross(a,B,m1,m2) && !seg_cross(a,B,w1,w2) && !seg_cross(A,b,w1,w2));
}
return true;
}
int main()
{
a=read();b=read();w1=read();w2=read();m1=read();m2=read();
cout << (check()?"YES":"NO");
return ;
}
Review:
1、求两线段是否有重合部分:
先判相交,再判叉积是否为0
2、判断一点是否在线段上:
先用叉积判是否在直线上,再用点积判线段两端是否在其两侧
[Codeforces 32E] Hide-and-Seek的更多相关文章
- 【BZOJ-1941】Hide and Seek KD-Tree
1941: [Sdoi2010]Hide and Seek Time Limit: 16 Sec Memory Limit: 162 MBSubmit: 830 Solved: 455[Submi ...
- [BZOJ1941][Sdoi2010]Hide and Seek
[BZOJ1941][Sdoi2010]Hide and Seek 试题描述 小猪iPig在PKU刚上完了无聊的猪性代数课,天资聪慧的iPig被这门对他来说无比简单的课弄得非常寂寞,为了消除寂寞感,他 ...
- BZOJ3402: [Usaco2009 Open]Hide and Seek 捉迷藏
3402: [Usaco2009 Open]Hide and Seek 捉迷藏 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 51 Solved: 4 ...
- BZOJ 3402: [Usaco2009 Open]Hide and Seek 捉迷藏
题目 3402: [Usaco2009 Open]Hide and Seek 捉迷藏 Time Limit: 3 Sec Memory Limit: 128 MB Description 贝 ...
- 3402: [Usaco2009 Open]Hide and Seek 捉迷藏
3402: [Usaco2009 Open]Hide and Seek 捉迷藏 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 78 Solved: 6 ...
- bzoj:1941: [Sdoi2010]Hide and Seek
1941: [Sdoi2010]Hide and Seek Time Limit: 16 Sec Memory Limit: 162 MBSubmit: 531 Solved: 295[Submi ...
- 【BZOJ】【1941】【SDOI2010】Hide and Seek
KD-Tree 一开始看错题了
- 洛谷 P2951 [USACO09OPEN]捉迷藏Hide and Seek
题目戳 题目描述 Bessie is playing hide and seek (a game in which a number of players hide and a single play ...
- 【BZOJ1941】Hide and Seek(KD-Tree)
[BZOJ1941]Hide and Seek(KD-Tree) 题面 BZOJ 洛谷 题解 \(KD-Tree\)对于每个点搜一下最近点和最远点就好了 #include<iostream> ...
- 【BZOJ1941】[Sdoi2010]Hide and Seek KDtree
[BZOJ1941][Sdoi2010]Hide and Seek Description 小猪iPig在PKU刚上完了无聊的猪性代数课,天资聪慧的iPig被这门对他来说无比简单的课弄得非常寂寞,为了 ...
随机推荐
- innodb_force_recovery
Warning Before using innodb_force_recovery ensure that you have a backup copy of your database in ca ...
- codeforces 1065D
题目链接:https://codeforces.com/problemset/problem/1065/D 题意:给你一个又1~n^2组成的n行n列的矩阵,你可以走日字型,直线,斜线,现在要求你从1走 ...
- CentOS 6.5 Linux 安装 openoffice
资源准备: Apache_OpenOffice_4.1.4_Linux_x86-64_install-rpm_zh-CN.tar.gz 编译安装: 本人资源包放在 /opt/moudles 中, 解压 ...
- Sqlserver面试题
1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name kecheng fenshu 张三 语文 81张三 数学 75李四 语文 ...
- Http/2 升级指南
[转]http://www.syyong.com/architecture/http2.html HTTP/2(最初名为HTTP/2.0)是 WWW 使用的 HTTP 网络协议的主要版本. 它来自早先 ...
- 谈pkusc2016的几道数学题
题面搬来的qwq(忘记出处了 水印应该能表示) [题解] 1. 我们看到这题先想到令(x+y+z)^3 展开得到一坨,稍微减减,得到我们要求证 delta = 3xy^2+3xz^2+3yx^2+3y ...
- bzoj 1011 近似估计
开始看这道题的时候没什么思路,后来忍不住看了题解,发现自己真是水啊... 自从学OI来第一次看到用约等的题 首先我们设w[i]为第i个星球的答案,g[i]为第i个星球受到1-g[i]个星球的引力 那么 ...
- hdu 2141 Can you find it?(二分查找)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2141 题目大意:查找是否又满足条件的x值. 这里简单介绍一个小算法,二分查找. /* x^2+6*x- ...
- mysql分页查询语法
一.limit语法 SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指 ...
- [ Python - 12 ] 线程的信号量、标志位及队列
线程的信号量 线程的信号量是同时允许一定数量的线程更改数据,主要作用在于限制线程的并发. #!_*_coding:utf-8_*_ # Author: hkey import threading, t ...