![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
凸包
L_0_Forever_LF
一个热爱OI的OIer
展开
-
BZOJ2388: 旅行规划
分块,每一块维护前缀和,观察发现,一次区间加操作对于LL前,RR后的区间里相对的大小关系没有影响,对于[L,R][L,R]里,将每个位置放在平面内作为一个点(i,si)(i,s_i),那么相当于给区间里加了一个斜率。 每个块维护一个凸包(上凸下凸应该都可以,下文以上凸为例),如果这个块被完整覆盖,就打个斜率的标记,否则暴力重构凸包。 询问时在区间里二分,找到一个最大的斜率(u,v)(u,v)使得原创 2016-10-26 16:16:27 · 820 阅读 · 0 评论 -
BZOJ2300: [HAOI2011]防线修建
每次删一个点或询问剩余点的凸包周长删一个点好麻烦呀,考虑离线,倒着操作将删点改为加点 然后就简单了,用一颗平衡树维护凸包中的点,倒着把点加回去 splay可以打set 论熟练运用STLcode:#include<set> #include<map> #include<deque> #include<queue> #include<stack> #include<cmath> #include<原创 2016-11-13 16:37:36 · 598 阅读 · 0 评论 -
BZOJ3482: [COCI2013]hiperprostor
询问不多可以当单次询问做 对于一条A到B的路径,若上面有a条特殊边,他的长度就为ax+b 先将特殊边长视为0,求出f[x][t]表示A到t,走了x条特殊边的最短路 那么A->B=a*x+f[a][B],这些路径的长度对应平面上的若干条直线,a就是这些直线的斜率 如果不存在f[0][B]就有无限种可能值,因为没有上界 否则维护一个凸包就可以求出所有最短路的可能值了code:#include<原创 2017-04-27 09:29:00 · 850 阅读 · 0 评论