
几何基础
奔跑的蜗new
这个作者很懒,什么都没留下…
展开
-
poj2318(叉乘+二分)
矩形被n块板分割,有m个物品都在矩形里,求每一块的物品的个数 用叉乘判断物品在板的左右侧,在用二分查找第一块在物品右侧的板#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int mx = 5e3+5;int u[mx], ...原创 2018-08-09 12:08:09 · 169 阅读 · 0 评论 -
poj2826(垃圾精度题)
求两块木板能装雨水的面积,垃圾题WA了几十发,随机数造了几十万组数据过了还是WA,最后用上long double加特判过的,特判了一块木板水平的情况,我也不知道为什么要特判,按我的做法这种情况不特判也会输出0的,数据是真的坑。#include <cstdio>#include <cstring>#include <cmath>#include &...原创 2018-08-13 18:16:23 · 390 阅读 · 0 评论 -
poj3348(凸包模板题)
Graham扫描法:参考博客一开始以为找到一个顶点向右转弯时,把这个顶点抛出只抛出一个,WA了一直找不到bug,用随机数大法测出了一个数据在这个例子中,走到第4个点时发现向右拐弯了,于是把第4个点抛出,这时第三个点还是向右拐弯的,所以应该一直抛出直到向左拐弯为止。#include <cstdio>#include <cstring>#include &...原创 2018-08-13 12:34:48 · 253 阅读 · 0 评论 -
POJ1696(极角排序)模板题
坐标上有n个点从一个点出发,只能沿直线走,只能逆时针拐弯,求走过每个点的顺序极角排序博客:几何:极角排序详解极角排序裸题,但是这题用atan2()很难写,因为atan2()函数返回值是(-π,π)也就是默认按照第四象限到第二象限排序,但是这题是逆时针选点,如果一个点在第二象限,一个在第四象限,那么根据atan2()返回值取小的点会取到第四象限那个点,而实际上应该去第二象限的那个点,所以这题...原创 2018-08-11 12:27:05 · 866 阅读 · 0 评论 -
POJ1410(线段矩形相交--坑多)
判断矩形和线段是否相交,线段在矩形内也算 前几题一直以为判断线段相交只需要跨步实验就行了,这题是个例外,因为这题相交可以是端点相交所以叉乘那里条件是 >= eps(注意这里的等号)这就导致如果有两条线段是在同一直线上的但是没有重合部分,那么通过跨立实验返回的是相交,就错了,必须再加上快速排斥#include <cstdio>#include <cstri...原创 2018-08-11 00:24:11 · 822 阅读 · 0 评论 -
POJ3449(垃圾作文题)
有n个图形问每个图形与哪些图形相交 正方形只给出对角两个点,已经对角点(a, b) (c,d),则另外两个对角点坐标为((a+b+c-d)/2, (-a+b+c+d)/2)和((a-b+c+d)/2, (a+b-c+d)/2), 由于负号的位置不同,所以直接把负号的位置背下来就行:4,1,2,3矩形给出三个点,第四个点很好求,利用对角点坐标相加除以2等于中心坐标就行了然后就是漫长的...原创 2018-08-14 13:40:08 · 320 阅读 · 0 评论 -
POJ - 1039(线段与直线相交)
有一个宽度为1的管道,一束光从左端射入问最远能到达的横坐标是多少 我的做法是把管道分为上半部分线段和下半部分线段,光线射入角度就是枚举管道拐点,然后从左到右判断上半部分的线段是否在光线的上面,如果不是则说明光线在这里被阻挡了,下半部分同理,最后取上下部分被阻挡点的最小值,就是此次枚举所能到达的横坐标 #include <cstdio>#include <c...原创 2018-08-14 10:06:49 · 252 阅读 · 0 评论 -
poj1556(线段相交模板题)
求(0,5) 到(10,5)的最短距离对每两个点进行建边然后跑最短路判断线段相交的方法参考这个博客:快速排斥实验和跨立实验 #include <cstdio>#include <cstring>#include <cmath>#include <vector>#include <algorithm>usi...原创 2018-08-10 12:36:17 · 816 阅读 · 0 评论 -
poj3304(叉乘)
有n条线段,问是否存在一条线段与所有给出得线段相交存在这样一条线段,那么一定可以通过旋转使得该线段与给出线段的某两个端点相交,所以枚举这样的线段只需要枚举任意两个端点即可,判断线段与线段是否相交,可以转化成判断线段1的两个端点是否在线段2的两侧,然后用叉乘来判断就行了,n注意==1时特判#include <cstdio>#include <cmath>#inc...原创 2018-08-09 20:02:23 · 173 阅读 · 0 评论 -
codeforces1028C (矩形相交)
有n个矩形,找出其中一个矩形的一个点,满足这个点至少包含在n-1个矩形内 处理一下前缀交,也就是矩形1-2的交矩形k, 再求矩形k与矩形3的交矩形。。。a[i]是前缀交,b[i]是后缀交假设p[i]这个矩形与其他矩形都没交矩形,那么就求a[i-1]与b[i+1]的交矩形K,相当于把p[i]扔了,如果K是一个矩形,那答案直接取K的左下角 #include <cstdi...原创 2018-08-29 09:52:34 · 305 阅读 · 0 评论