凸包
文章平均质量分 50
DZYO
Never stop
展开
-
BJ模拟 Goodness(凸包+三分答案)
BJ模拟 Goodness(凸包+三分答案)原创 2017-03-23 14:35:27 · 724 阅读 · 0 评论 -
BJ模拟:帐篷(凸包)
传送门题解: 凸包。注意n,mn,mn,m很大时答案为周长,而周长最小则自动满足凸性,我们只需要枚举起始点即可O(n2)O(n2)O(n^2)DP。时间复杂度为O(n3)O(n3)O(n^3)。n,mn,mn,m很小的时候我们多记录一个前驱即可。 注意DP要从横纵坐标最小的点开始,不然最后首尾的三个点可能不会满足凸性。这一部分的时间复杂度为O(n4)O(n4)O(n^4 ),预处...原创 2018-04-20 21:39:51 · 225 阅读 · 0 评论 -
BJ模拟:巡游计划(线段树分治+动态凸包 / 李超线段树)
传送门题意: fi=minj=i−ki−1{fj+aj+|pi−pj|∗bj}fi=minj=i−ki−1{fj+aj+|pi−pj|∗bj}f_i = \min_{j=i-k}^{i-1} \{f_j+a_j+|p_i-p_j|*b_j\}求fnfnf_n。题解: 对于kkk的限制,采用线段树分治来解决: 把每个点影响的区间放到线段树上,查询的区间也放到线段树上,保证处理这个区...原创 2018-04-12 23:02:49 · 386 阅读 · 0 评论 -
2017 ECNA Regional Contest B:Craters (圆的凸包)
传送门题解: 做出圆的两两公切点,丢掉所有在某个圆内部的点,之后做凸包即可。计算长度时判断是否在一个圆上。注意圆先要去重,以及计算两点在圆上的长度先要判断是优弧还是劣弧。#include <bits/stdc++.h>typedef long double LD;using namespace std;inline int rd() { char ch=...原创 2018-02-25 18:26:25 · 880 阅读 · 0 评论 -
BZOJ2395: [Balkan 2011]Time is money(QuickHull算法)
传送门题解: 将每个生成树看做二维平面上的点,那么最优决策位于下凸包。先找到两个在凸包上的点,每次找距离两个点距离最远点然后迭代找出所有点,因为凸包上的点的个数为期望lognlogn\log n 的,每次找点是(m+n)logn(m+n)logn(m+n)\log n的,所以总的时间复杂度为O((n+m)log2n)O((n+m)log2n)O((n+m) \log^2 n)(...原创 2018-02-12 13:18:17 · 325 阅读 · 0 评论 -
BZOJ5077: [Ctsc2016]时空旅行(线段树+凸包)
传送门题解: 首先答案为min(x−xi)2+cimin(x−xi)2+ci\min {(x-x_i)^2+c_i},移项得x2−2xix+x2i+cx2−2xix+xi2+cx^2 -2x_ix+x_i^2+c 其实是给一堆直线和给定的xxx,求与直线最下方的交点。那么显然是维护凸壳了,因为一个星球只对部分时空产生影响,那么我们在线段树上把这些直线丢进去,维护线段树上每个节点的凸壳。...原创 2018-02-26 18:25:06 · 347 阅读 · 0 评论 -
BZOJ2829: 信用卡凸包(圆的凸包)
传送门题解:难道觉得这道题不简单的只有我一个么。。首先看一道类似的题:poj1113:Wall给一堆同样半径的圆,求凸包。在同样半径的前提下,显然圆心所形成的凸包内部的点是没有任何意义的,因为能被外面的凸包圆间的切线覆盖。那么直接求圆心的凸包就好了。那么这道题就好做了,原题相当于是给你四个圆,求凸包,做法一模一样。。Code:http://paste.ubuntu.com/26012006/那么问题原创 2017-11-21 20:56:39 · 488 阅读 · 0 评论 -
BZOJ 3707: 圈地 (动态凸包)
传送门题意: 给nn个点,求最小三角形。(n≤1000)(n\le 1000)题解: 好题啊。。首先如果选定了底边的两点,那么还需要选择一条离这条底边最近的点。 将当前坐标系y轴旋转这条底边,那么选择|X||X|最小的点。考虑按照斜率从小到大枚举底边。 对于两个点a,ba,b来说,若一条底边c,dc,d的斜率小于a,ba,b斜率,且在c,dc,d的坐标系下ax>bxa_x>b_x,那么在所有原创 2017-11-18 14:44:57 · 500 阅读 · 0 评论 -
poj1912:A highway and the seven dwarfs(凸包)
传送门题意: 给出平面上的N个点,对于M条直线,依次判断这N个点是否在每条直线的同一侧。是输出GOOD,不是输出BAD。题解: 凸包+二分。首先构造出凸包,之后对于一条直线,找出其两条平行线,这两条平行线在凸包上是切线,再判断相切的两个点构成的线段是否与直线相交就行了。#include<iostream>#include<set>#include<cmath>#include<cstdio原创 2017-10-10 21:47:47 · 438 阅读 · 0 评论 -
Codeforces 1045F: Shady Lady(凸包)
传送门题解:神题啊。题目等价于如果去掉任何一个单项式,剩下的多项式无下界,则输掉比赛。有个结论,一个多项式无下界,如果我们把每一项xaybx^ay^bxayb看做平面上的点(a,b)(a,b)(a,b)的话,最后的凸包上存在一个点的横坐标或者纵坐标是奇数。证明:1.全是偶数则有下界。考虑凸包上的所有点PiP_iPi,凸包内任何一个点(A,B)(A,B)(A,B)可以表示为∑iaiP...原创 2018-09-27 14:33:15 · 454 阅读 · 0 评论