[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被这门对他来说无比简单的课弄得非常寂寞,为了 ...
随机推荐
- 收藏一个漂亮的Flash焦点图切换
网上闲逛的时候发现一个Flash焦点图效果,跟喜欢,然后就下载回来,收集在这里,以便以后方便取用.这个Flash使用方法也是相当简单的,如果你喜欢,也可以从这里查看源代码下载. Flash 焦点图效果 ...
- Spring源码解析-AutowiredAnnotationBeanPostProcessor
1.实现了BeanPostProcessor接口,可先看这个接口 ApplicationContext可以在自动检测BeanPostProcessor bean,在它创建完后可以创建任何的bean. ...
- fastjson对json操作
fastjson对json字符串JSONObject和JSONArray互相转换操作示例 fastjson的方法: Fastjson API入口类是com.alibaba.fastjson.JSON ...
- 用angular.element实现jquery的一些功能的简单示例
下面实现了在每个p元素后面自动添加hello world. 在这里我要说的是jquery中的 $document.ready()相当于angualr 中的angualr.element(documen ...
- Hibernate 三种状态变化 与 sql 语句的关系
前言:在Hibernate中有三种状态,对它的深入理解,才能更好的理解hibernate的运行机理,刚开始不太注意这些概念,后来发现它是重要的.对于理解hibernate,JVM和sql的关系有更好的 ...
- 解决mysql报错:- Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ'
mysql执行报错: - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c ...
- [ CodeVS冲杯之路 ] P2492
不充钱,你怎么AC? 题目:http://codevs.cn/problem/2492/ 在此先orz小胖子,教我怎么路径压缩链表,那么这样就可以在任意节点跳进链表啦(手动@LCF) 对于查询操作,直 ...
- [bzoj3224]Tyvj 1728 普通平衡树——splay模板
题目 你需要写一种数据结构支援以下操作. 插入元素. 删除元素. 查询元素的排名. 查询第k小的元素. 查询元素前趋. 查询元素后继. 题解 BBST裸题. 代码 #include <cstdi ...
- React第三次入门
传统HTML开发在处理越来越多的服务器数据和用户交互数据反应到复杂界面的时候,代码量越来越大,难以维护. Angular是基于MVVM的开发框架,重量级..不适用于移动端的web栈, 其UI组件的封装 ...
- vc6.0里使用lib(静态库)的方法
vc6.0 中使用lib文件 使用库的方法如下:1. 包含库的头文件(把库的头文件包含到项目中)在应用程序工程中使用#include "file path"file path可以为 ...