凸包
make_it_for_good
这个作者很懒,什么都没留下…
展开
-
bzoj 2726 [SDOI2012]任务安排 CDQ分治维护凸包 dp
单调处理出第一个串往两边K个能覆盖的字符。 然后对四种字符每种字符做一遍FFT。 对于第一个串,如果这个位置不能匹配当前字符,那该位置为1。 对于第二个串,如果这个位置为当前字符,那该位置为1。 把第二个串反过来和第一个串跑FFT。 答案是在所有FFT中都为0的合法位置个数。#include <bits/stdc++.h> using namespace std; #define N 21原创 2016-12-15 08:57:41 · 626 阅读 · 0 评论 -
bzoj 2961 共点圆 CDQ分治 凸包
凸包一向写得蛋疼,何况这题有两个凸包。。。 条件(x1−x)2+(y1−y)2>x2+y2(x1-x)^2+(y1-y)^2>x^2+y^2 化一下可以变成 x12+y12−2xx1−2yy1>0x1^2+y1^2-2xx1-2yy1>0 最大化x12+y12−2xx1−2yy1x1^2+y1^2-2xx1-2yy1 就是最小化b=2xx1+2yy1b=2xx1+2yy1 y=by1+(−x原创 2017-01-04 21:40:49 · 668 阅读 · 0 评论 -
bzoj 3533 [Sdoi2014]向量集 凸包
和2961求的是一个东西。 维护上下两个凸包,然后三分。 上次写得是一个正常的线段树,填满一个区间就合并。 这次写了一个奇怪的按二进制维护log棵类线段树状物的东西,然后发现跑得比线段树慢。。。#include <bits/stdc++.h> using namespace std; #define ll long long #define N 810000 const ll inf=~0ll原创 2017-01-05 10:56:52 · 366 阅读 · 0 评论 -
bzoj 2300 [HAOI2011]防线修建 splay维护凸包
正常的splay维护凸包不支持删点,把操作倒过来变成加点。 HAOI真心良心呀,边界都给好了。。。#include <bits/stdc++.h> using namespace std; #define N 110000 #define M 210000 #define which(x) (ch[fa[x]][1]==x) int d,n,Q,root; int X[N],Y[N],vis[N]原创 2016-12-28 15:00:35 · 420 阅读 · 0 评论 -
bzoj 2402 陶陶的难题II 01分数规划 树链剖分 线段树维护凸包
先01分数规划一下,然后这个东西就是求(qj−kpj)+(yi−kxi)(q_j-kp_j)+(y_i-kx_i) 的最大值。 把qi−kpiq_i-kp_i 和yi−kxiy_i-kx_i分开考虑,这是一个斜率的式子,只会取上凸包的点。因此树剖把这个东西放到线段树上,线段树每个节点维护一个凸包。 然后求的时候三分就行了。 虽然这个东西看起来是log4log^4 的,不过01分数规划如果用迭代原创 2016-12-29 18:07:13 · 992 阅读 · 0 评论