uva10256】的更多相关文章

uva10256 题意 平面上存在两种颜色的点,问是否存在一条直线,使得任取一个红点和一个蓝点都在直线的异侧,这条直线不经过任何点. 分析 对每种颜色的点求一发凸包,问题等价于判断两个多边形是否相交或相切. 判断是否有边相交 判断是否有点在另一个多边形内或边上 code #include<bits/stdc++.h> using namespace std; typedef long long ll; const double INF = 1e18; const int MAXN = 6e2…
[题解]The Great Divide [Uva10256] 传送门:\(\text{The Great Divide [Uva10256]}\) [题目描述] 输入多组数据,每组数据给定 \(n\) 个红点坐标和 \(m\) 个蓝点坐标,判断是否可以用一条直线将两种颜色的点完全隔离开(直线不能经过某个点). [输入] 每组数据第一行为两个整数 \(n,m\),接下来 \(n+m\) 行每行两个整数 \(x,y\) 表示一个坐标,前 \(n\) 行为红点,后 \(m\) 行表示蓝点. [输出]…
省选前练模板系列: #include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; ; ,inf=1e9; int n1,n2,m1,m2,pp; double mi; ;?-:;} struct vec{ double x,y,ang; vec(){}; vec(double a,doub…
怎么又没人写题解,那我来贡献一发好了. 题目意思很简单,平面上有两种颜色的点,问你能否求出一条直线使两种颜色的点完全分开. 首先我们考虑两个点集相离的充要条件,这两个点集的凸包必须相离.(很好证明或者画画图理解一下) 那么怎么判断两个凸包相离,考虑到这里的点的个数不多,我们可以用一种最暴力的方法. 枚举一个凸包上的所有点和所有边,然后判断是否与另一个凸包相离即可. 点是否在多边形内?直接暴力转角法即可(不推荐射线法,好理解但不好写,精度不高) 边是否在多边形内,在两个凸包中分别枚举一条边,然后判…