单调栈
cervoliu
这个作者很懒,什么都没留下…
展开
-
【BOI2012】Mobile
Description平面上有一条线段,从(0,0)到(L,0) 有N个点,求线段上任意一点到这N个点中最近点的距离的最大值 换言之,求一个半径,使得以这N个点为圆心所成的圆能覆盖整条线段 1<=N<=10^6,1<=L<=10^9 输入的N个点按照x坐标不下降排列。如果两个点的x坐标相同,那么它们之间按照y坐标的升序排列。Analysis显然时间要求线性 假设所有n个点x坐标均不相同。如原创 2017-03-10 18:55:15 · 740 阅读 · 0 评论 -
【JZOJ 5403】 Lost My Music
Description n<=5∗105,ci<=109n<=5*10^5,ci<=10^9凸壳将dis(u,v)写成dep[u]-dep[v],这就是个斜率的形式 手动脑补一下可以发现我们只需要维护根到当前点u的一个凸壳,即可算出答案 暴力弹栈,暴力加入复杂度是O(n^2)的,我们需要优化倍增记录每个点在凸壳上的前一个点,于是我们不需要暴力弹栈,可以倍增二分判断 成功将复杂度优化为O(nl原创 2017-10-09 21:46:08 · 701 阅读 · 0 评论 -
【线段树维护单调栈】【JZOJ 5402】 God Knows
Description DP左边->上边,右边->下边(题目反人类) 设f[i]表示上边最后一个匹配是(i,pi),需要找到一个j < i,且j能转移i,且f[j]尽量小 直接暴力n^2就有60分了100%DP优化把决策画出来(在平面图上,x轴为i,y轴为pi),观察哪些 j 能转移到 i 首先pj>pi的 j 可以忽略了 对于剩下的,发现只有从左到右一个单调递减的栈里的 j 才能转移到原创 2017-10-12 21:05:18 · 1125 阅读 · 0 评论 -
【JZOJ 5415】 公交运输
Description城市中有一条长度为n的道路,每隔1的长度有一个公交车站,编号从0到n,学校在0号车站的位置。其中每个公交车站(除了n号车站)有两个属性ci和vi,代表从这个公交车站出发的公交车的性质。ci代表这个从i出发的公交车,相邻两个停靠站之间的距离。vi表示每坐1站的花费。 注意,一辆公交车出发后会向n号车站的方向行进。同时,一名乘客只能从起点站上车,但可以从任意停靠站下车。校庆志愿者原创 2017-10-24 22:01:13 · 373 阅读 · 0 评论