计算几何
sunyutian1998
这个作者很懒,什么都没留下…
展开
-
The Doors POJ - 1556
点击打开链接 对于横坐标不同的两个点 判断是否可以通过直线相连 即两者间连线不与其他线段相交 若符合条件则加一条边 最后通过dijkstra或spfa求解 #include <cstdio> #include <queue> #include <cmath> #include <cstring> #include &l...原创 2018-03-04 10:40:37 · 157 阅读 · 0 评论 -
Intersecting Lines POJ - 1269
http://poj.org/problem?id=1269 叉积真的是计算几何利器 首先对于两条直线(p1 p2) (p3 p4) 若两直线共线 则p3-p1与p2-p1的叉积模为0且p4-p1与p2-p1的叉积模为0 否则 用斜率判一下平行 最后 如果相交求交点 设交点为p0 则p1-p0与p2-p0的叉积模为0p3-p0与p4-p0的叉积模为0 联立后可得a1*x+b1*y+c1...原创 2019-05-10 19:58:49 · 163 阅读 · 0 评论 -
Segments POJ - 3304
http://poj.org/problem?id=3304 利用叉积可以判断一个点在直线的哪一侧 对于两线段确定的直线(u1 v1) (u2 v2) 如果u1与v1在(u2 v2)不同侧或u2与v2在(u1 v1)不同侧 则两直线相交 对于这道题来说 是否存在一条直线 使所有线段在该直线上的投影都相交于一点 这个问题等价于是否存在一条直线与所有线段相交因为如果存在这样一条直线的话 该直线...原创 2019-05-10 15:38:24 · 133 阅读 · 0 评论 -
TOYS POJ - 2318
http://poj.org/problem?id=2318 利用叉积判断点在线段所确定直线的哪一侧 二分一下即可 叉积参考https://www.cnblogs.com/flipped/p/7207560.html #include <cstdio> #include <cstring> #include <algorithm> using na...原创 2019-05-10 13:10:19 · 208 阅读 · 0 评论 -
广场舞 蓝桥真题
https://www.dotcpp.com/oj/problem1838.html 50%数据参考博客https://blog.csdn.net/qq_39562286/article/details/80033097 很多博客的思路都是 枚举每个小正方形的右上角 然后判断其余三个角是不是在多边形内 但是当出现斜率不存在的直线时就不好使了 比如下面这个样例 6 0 0 2 0 2 3 1 ...原创 2019-05-14 21:59:30 · 148 阅读 · 0 评论 -
Cake ZOJ - 3537
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3537 学会了求凸包 其实就是单调栈的思想 详见https://blog.csdn.net/codeswarrior/article/details/81327277 然后就是裸的凸多边形三角划分 区间DP即可 #include <bits/stdc++....原创 2019-04-18 09:57:36 · 180 阅读 · 0 评论 -
Explore Track of Point HDU - 5476
http://acm.hdu.edu.cn/showproblem.php?pid=5476 证明转载: 对上述证明中三角形相似的补充: 弦切角定理:弦切角的度数等于它所夹的弧所对的圆心角度数的一半。等于它所夹的弧的圆周角度数。 如图:AC是⊙O的切线,PQ为⊙O的弦,∴弦切角∠ACP=∠PQC=1/2∠COP 证明:由图可知:OP=OC ∴∠OPC=∠OCP=1/...原创 2018-09-14 09:19:09 · 196 阅读 · 0 评论 -
Covered Points CodeForces - 1036E
http://codeforces.com/contest/1036/problem/E 卡B题时间太长 E没来及写。。 因为都是整数点 所以线段上的整数点数量就是横坐标之差与纵坐标之差的gcd+1 然后就是去重 n^2的求出所有交点 map去重 #include <bits/stdc++.h> using namespace std; #define ll long lon...原创 2018-09-08 09:05:18 · 361 阅读 · 0 评论 -
An Easy Problem?! POJ - 2826
点击打开链接 一开始真以为是水题 然后WA了一天 两线段所在直线的关系有平行与相交 首先平行绝对不可以 去掉平行时顺带去掉了重叠或部分重叠这一情况 若相交且可以盛水 则四个端点中必有两个在交点上方 分类讨论 1. 两点在交点异侧 这种情况下必然可以盛水 直接计算(详见代码) 2. 两点在交点同侧 这时可能会存在上方的线段l1(p0p1...原创 2018-02-27 16:41:48 · 210 阅读 · 0 评论 -
Robot Arm CodeForces - 618E
点击打开链接 很巧妙的一道题 每个区间只维护右端点相对于左端点的相对位置 而不是相对于原点 这样利用线段树维护区间的功能 使总区间[1,n]维护答案 #include <bits/stdc++.h> using namespace std; #define PI acos(-1.0) struct node { int l; int r; double...原创 2018-04-02 21:37:08 · 308 阅读 · 0 评论 -
Building HDU - 5033
http://acm.hdu.edu.cn/showproblem.php?pid=5033 详见注释 #include <bits/stdc++.h> using namespace std; const double PI=acos(-1.0); const int maxn=1e5+10; struct node { double x,h; int tp;...原创 2019-05-15 22:19:38 · 186 阅读 · 0 评论