计算几何
L_0_Forever_LF
一个热爱OI的OIer
展开
-
BZOJ2300: [HAOI2011]防线修建
每次删一个点或询问剩余点的凸包周长删一个点好麻烦呀,考虑离线,倒着操作将删点改为加点 然后就简单了,用一颗平衡树维护凸包中的点,倒着把点加回去 splay可以打set 论熟练运用STLcode:#include<set> #include<map> #include<deque> #include<queue> #include<stack> #include<cmath> #include<原创 2016-11-13 16:37:36 · 620 阅读 · 0 评论 -
BZOJ1100: [POI2007]对称轴osi
一眼感觉是计算几何题…然后不会做…. 结果居然是字符串题….如果我们能将一个多边形表示成一个字符串的话,对称就变成了回文 我们用边长代表这条边,用两条邻边的叉积代表这个点(因为叉积就是有向面积) 然后将这个数字序列复制一份到后面 找所有长度>2*n的回文串 最后答案要/2,因为每个对称轴会被算两次code:#include<set> #include<map> #include<deque原创 2017-09-23 21:00:01 · 498 阅读 · 0 评论 -
BZOJ1137: [POI2009]Wsp 岛屿
看错题了qwq看对题了也不会呀… 题解说是半平面交裸题 于是学了一下半平面交 贴个板子qwqcode:#include<set> #include<map> #include<deque> #include<queue> #include<stack> #include<cmath> #include<ctime> #include<bitset> #include<string> #incl原创 2017-12-11 16:30:49 · 303 阅读 · 0 评论 -
BZOJ1132: [POI2008]Tro
所以为啥用long long本地能过所有数据交上去就WA,一定要改int啊一开始写了个用点到直线距离公式的,维护两个指针扫过去 emmmmmm并不能过样例,因为有根号什么的东西,调不动….膜题解发现可以用叉积(好有道理..) 改成叉积,继续用两个指针扫….过了样例WA了… 调一下发现排序出的结果不是我想要的qwq 所以说我不会做各种几何题qwq那把题解看完吧 按x排序所有点,枚举每个点为原原创 2017-12-08 10:18:08 · 315 阅读 · 0 评论 -
BZOJ1043: [HAOI2008]下落的圆盘
求红线总长可以用每个圆的周长减去被覆盖的部分 对每个圆i,枚举j>ij>ij>i计算圆j覆盖了圆i的长度 若i和j相离/相切或i包含j不考虑 若i被j包含就被完全覆盖 否则是相交的情况如图 圆A和圆B交与C,D,可以算出AE,CE的长度,用余弦定理可以算得cosCAE,用acos,atan2可以算得A被覆盖的一个弧度区间,把所有覆盖的区间求出来后就变成了一个区间覆盖问题 ...原创 2018-02-11 18:23:25 · 302 阅读 · 0 评论 -
BZOJ2732: [HNOI2012]射箭
这题被卡到有心理阴影… 二分一下问题变成判断是否存在一条抛物线经过若干条线段 因为抛物线过(0,0),所以设一个参数(a,b),可以根据过这些线段列出很多不等式,然后变成判断这些不等式是否存在解,可以用半平面交判 但是这题数据很毒….实现上有些细节 比如因为可以过线段的端点,可以将每条线段向上下拓展一些,因为要求a<0,半平面交的下界不能是0,然后用long double 我T了.....原创 2018-02-11 18:38:17 · 355 阅读 · 0 评论 -
BZOJ1502: [NOI2005]月下柠檬树
因为光线平行,射过去的面积其实是一个个圆和他们之间的公切线 算面积可以套自适应Simpson积分,好像大概是这个东西S(l,r)=r−l6(h(l)+h(r)+4h(mid))S(l,r)=r−l6(h(l)+h(r)+4h(mid))S(l,r)=\dfrac{r-l}{6}(h(l)+h(r)+4h(mid)) code: #include<set> #include&l...原创 2018-02-21 15:00:41 · 293 阅读 · 0 评论