摘要: 凸多边形的面积就相当于半平面交 求几个凸多边形面积交就相当于一堆半平面一起求交 ~~~cpp include include include include using namespace std; const int maxn=1e3+100; struct Point{ double x,y; 阅读全文
posted @ 2018-11-24 22:25 nianheng 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 把地面看成半平面,能看到所有位置的点所在的区域即为半平面的交 因为分段函数的极值只会在转折处或边界取到,所以对于半平面上和地面上的每一个交点都求一下距离就好了 ~~~cpp include include include include using namespace std; const int 阅读全文
posted @ 2018-11-24 22:23 nianheng 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 半平面交第一题 ! 题意是给出一个多边形,问他是否存在内核,即“可以看到任何一个地方的区域”。 内核即半平面交,下面是离线求半平面交的$nlogn$算法 ~~~cpp include include include include include using namespace std; const 阅读全文
posted @ 2018-11-23 23:00 nianheng 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一些直线,直线与直线切割的线段是围墙,只能从围墙中间穿过,问最少穿过几层墙才能到达终点 看到数据范围很小就开心地写了暴力找点+最短路,后来看了hzwer大神的题解才发现我还是太naive了... 这道题只要求从终点到外围直线与围墙的最少交点就能过! ~~~cpp include inclu 阅读全文
posted @ 2018-11-23 22:52 nianheng 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一些墙,不能穿墙,求从起点到终点的最短路 就是最短路啊 ~~~cpp include include include include include using namespace std; const int maxn=1e5+100; const double inf=1e10; st 阅读全文
posted @ 2018-11-23 22:45 nianheng 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 题意:判断两条直线相交,平行还是重合 ~~~cpp include include include include using namespace std; struct Point{ double x,y; Point(double xx=0,double yy=0){ x=xx,y=yy; } 阅读全文
posted @ 2018-11-23 22:43 nianheng 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 题意:给出n条线段,问是否存在一条直线使所有线段在其上的映射有至少一个共点 假设找到了这条直线,那过共点作直线的垂线必然与n条线段相交,就相当于问是否存在直线可以与所有线段相交 $n^2$枚举直线,然后$O(n)$判断 ~~~cpp include include include include u 阅读全文
posted @ 2018-11-23 22:40 nianheng 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 考虑网络流,二分时间,源点向巫妖连流量为攻击次数的边,把每个巫妖向他能打的小精灵连一条流量为一的边,每个小精灵向汇点连一条边。 预处理每个小精灵能被那些巫妖打,这道题好像视线与树相切也算能打~~(雾~~。 ~~~cpp include include include include include 阅读全文
posted @ 2018-11-23 22:30 nianheng 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 题目中给出了三种金属的比例,实际上只用考虑两个就可以,第三个可以由另外两个确定qwq 如果把原料和需求看做二维平面上的点,可以发现两种原料能混合成的比例就在他们相连的线段上,也就是说线段上的点都能混合出来。所以如果一种需求包含在一些原料构成的多边形中,他就是可以被混合出来的,题目就变成了用最少的原料 阅读全文
posted @ 2018-11-23 22:18 nianheng 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 这道题的转化很巧妙,可以把信用卡四个角的圆心看做平面上的点来做凸包,$ans$就是凸包周长加上一个圆的周长 ~~~cpp // luogu judger enable o2 include include include include using namespace std; const int 阅读全文
posted @ 2018-11-22 23:11 nianheng 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 倒过来处理所有询问,就变成了一道动态凸包的裸题 吐槽一下这道题只要维护上凸壳就好了,我zz了没好好看题打了两个2333 ~~~cpp // luogu judger enable o2 include include include include include define rp ( r) de 阅读全文
posted @ 2018-11-22 23:06 nianheng 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 求平面内四边形的最大面积 显然四个端点都应该在凸包上,就先求凸包,然后$n^2$枚举四边形对角线,对于一个点$i$,顺序枚举$j$,同时用旋转卡壳的方法去找离对角线最远的两个点。总时间复杂度$n^2$ luogu一遍过,但不知道为什么BZOJ死活TLE... ~~~cpp include inclu 阅读全文
posted @ 2018-11-22 22:46 nianheng 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 有一些毒瘤题,数据大小不光会炸$int$,有时甚至会炸$long long$。这时一个$O(1)$的防爆乘就很重要了 $a b%p$可以转化为$a b [a b/p] p$ 这里用了$long double$舍弃低位保留18位的特性 最后不要忘记特判 ~~~cpp inline ll C(ll a, 阅读全文
posted @ 2018-11-08 11:03 nianheng 阅读(472) 评论(0) 推荐(0) 编辑
摘要: 先将n个单词插入哈希表,记录左右端点,每次右端点往后移动,读入一个新的单词并记录下它的哈希值,如果这个单词之前没出现过那么更新$ans$和$minl$,如果左端点的单词出现了不止一次则可以往右缩,从而保证长度最短。 ~~~cpp include include include include inc 阅读全文
posted @ 2018-11-07 15:01 nianheng 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 吐槽一下自己代码里长的一匹的状态... $f[1000][10][10][2][2][2][2]$分别记录当前位,前一位值,前前位值,是否有前导零,是否前一个有前导零,是否有上限,是否已经满足条件 ~~~cpp include include include include using namesp 阅读全文
posted @ 2018-11-07 11:28 nianheng 阅读(118) 评论(0) 推荐(0) 编辑