
凸包
文章平均质量分 63
Neo__Z
这个作者很懒,什么都没留下…
展开
-
bzoj 1027 合金【凸包】
解题思路:由于a+b+c=1,所以确定了a,b,那么c就被确定了,所以c这一维可以无视。把一种合金(a,b)看做平面上的一个点。那对于两个点A(a1,b1),B(a2,b2),那么线段AB就是它们可组成的合金,因为线段AB上的每个点都可表示为(xa1+(1-x)a2,xb1+(1-x)b2)(可以用向量证明)。如果再加入一个点C,那线段AB上任意一点到C的线段上所表示的合金都可炼成,即三角形ABC中原创 2017-11-23 11:33:40 · 368 阅读 · 0 评论 -
bzoj5317: [Jsoi2018]部落战争【凸包/Minkowski sum】
传送门解题思路:先求凸包。 合法向量相当于凸包A中存在一点经过该向量可到凸包B中。 即 A+v⃗ =BA+v→=BA+\vec v=B ,那么v⃗ =A−Bv→=A−B\vec v=A-B 画图发现,这些向量的轮廓就是凸包A绕取反后凸包B坐标平移一圈。 好像这个东西也叫Minkowski sum,即求{v⃗ =a⃗ +b⃗ ,a⃗&...原创 2018-05-21 14:53:12 · 1611 阅读 · 0 评论 -
bzoj5252 [九省联考 2018] 林克卡特树【动态规划+二分凸包】
解题思路:首先分析题意:就是求k+1k+1k+1条不相交的链,使其权值和最大。第一个反应肯定是用费用流做,那么费用流有什么性质呢? 考虑增广过程,相当于每次都新找一条链出来(也会影响原来的链),不妨设找iii条链的最优答案为AnsiAnsiAns_i,那么有Ansi−Ansi−1≥Ansi+1−AnsiAnsi−Ansi−1≥Ansi+1−AnsiAns_i-Ans_{i-1}\ge A...原创 2018-05-02 14:22:44 · 477 阅读 · 0 评论 -
BJ模拟 帐篷【凸包】
题目描述: n,m<=400解题思路:当n,m很小时,直接暴力枚举起点,用三角剖分的方式,状态记录当前点和上一个点dp,复杂度为O(n4)O(n4)O(n^4) 当n,m较大时,h已经远超1e9z,直接求周长最小凸包即可,注意周长最小时自动满足凸性,所以可以只枚举起点,状态记录当前点dp即可,也可以用floyed求最小环的方式dp,时间复杂度皆为O(n3)O(n3)O(n^3...原创 2018-05-01 11:11:00 · 188 阅读 · 0 评论 -
bzoj4570: [Scoi2016]妖怪【凸包+对勾函数最小值】
Description邱老师是妖怪爱好者,他有n只妖怪,每只妖怪有攻击力atk和防御力dnf两种属性。邱老师立志成为妖怪大师,于 是他从真新镇出发,踏上未知的旅途,见识不同的风景。环境对妖怪的战斗力有很大影响,在某种环境中,妖怪可 以降低自己k×a点攻击力,提升k×b点防御力或者,提升自己k×a点攻击力,降低k×b点防御力,a,b属于正实数 ,k为任意实数,但是atk和dnf必须始终非负...原创 2018-03-26 21:04:46 · 371 阅读 · 0 评论 -
CodeForces 682E Alyona and Triangles【最大三角形 旋转卡壳or迭代】
题目大意:给出n个点,任意三个点组成的三角形面积不超过S,S大于n个点可以组成三角形的最大面积; 构造一个大三角形覆盖上述所有n个点,并且面积不超过4S;解题思路:不得不说思路很巧妙,不过题目中的S取值也相当于给了个暗示。结论:先求出最大三角形ABCABCABC,再以abc分别作为三边中点所得三角形A′B′C′A′B′C′A'B'C'即是所求三角形。如图: 证明:...原创 2018-02-25 14:44:19 · 454 阅读 · 0 评论 -
poj1259 The picnic【最大空凸包详解 计算几何+动态规划】
题目大意:给定平面上nnn个点,求面积最大的空凸包。1≤n≤1001≤n≤1001\le n\le 100解题思路:感谢http://blog.youkuaiyun.com/nyroro/article/details/45268767这篇博客的讲解。算法一先枚举每个点作为凸包的最下面的点O,不考虑它下方的点,其余点以O为原点极角排序。再枚举凸包最后一个点iii与O相连,设dp[i...原创 2018-02-25 09:12:02 · 968 阅读 · 0 评论 -
bzoj2402: 陶陶的难题II【分数规划+树链剖分+线段树维护凸包】
DescriptionInput第一行包含一个正整数N,表示树中结点的个数。 第二行包含N个正实数,第i个数表示xi。 第三行包含N个正实数,第i个数表示yi 。 第四行包含N个正实数,第i个数表示pi。 第五行包含N个正实数,第i个数表示qi。 下面有N-1行,每行包含两个正整数a,b(1<=a,b<=N),表示树中的边。 第N+5行包含一个正整数M,表示...原创 2018-02-24 18:10:00 · 291 阅读 · 0 评论 -
SGU278 Fuel【凸包】
题目大意:有n种燃料,每种有三个属性:ai,bi,ciai,bi,cia_i,b_i,c_i; 给定A,BA,BA,B,要求∑aimi≤A,∑bimi≤B∑aimi≤A,∑bimi≤B\sum a_im_i\le A,\sum b_im_i\le B,使得∑cimi∑cimi\sum c_im_i最大,mimim_i可以为实数。解题思路:先将四个变量转为三个: 令xi=cimi,a...原创 2018-02-21 18:44:03 · 597 阅读 · 0 评论 -
bzoj2300: [HAOI2011]防线修建【动态凸包】
解题思路:把询问离线倒序处理,维护只加点的动态凸包即可。#include<bits/stdc++.h>#define ll long longusing namespace std;int getint(){ int i=0,f=1;char c; for(c=getchar();(c!='-')&&(c<'0'||c>...原创 2018-02-21 11:13:27 · 255 阅读 · 0 评论 -
codevs1273 风战 【三角剖分+凸包+动态规划】
题目大意:原题翻译细节有误,加上我自己看丢条件,导致我想了半天没想通。 题意是有n个白点,m个黑点,还有原点(0,0)无色,黑白点的纵坐标均大于0,且无三点共线,要求一个必须包含原点的凸包,使得凸包中白点的数量减黑点的最多。n+m小等于100。解题思路:如果没有“纵坐标均大于0”,“无三点共线“,“必须包含原点”三个条件,题目将变得很恶心,然而原题没翻译第三个条件,我看丢了前两个...原创 2018-02-20 08:33:48 · 447 阅读 · 1 评论 -
bzoj2388: 旅行规划【分块+凸包】
DescriptionOIVillage是一个风景秀美的乡村,为了更好的利用当地的旅游资源,吸引游客,推动经济发展,xkszltl决定修建了一条铁路将当地n个最著名的经典连接起来,让游客可以通过火车从铁路起点(1号景点)出发,依次游览每个景区。为了更好的评价这条铁路,xkszltl为每一个景区都哦赋予了一个美观度,而一条旅行路径的价值就是它所经过的景区的美观度之和。不过,随着天气与季节的变化,...原创 2018-03-06 21:40:42 · 337 阅读 · 0 评论 -
bzoj2395 Timeismoney【最小乘积生成树】
解题思路:题目即是求令∑ci∗∑ti\sum c_i*\sum t_i最小的生成树。我们把∑ci\sum c_i看做横坐标xx,∑ti\sum t_i看做纵坐标yy,要求k=xyk=xy最小,即是使得函数y=kxy=\frac{k}{x}最接近坐标轴。而一个点对应了一个函数,这些函数要么重合,要么不相交。 所以我们要找的点一定在一个左下部分的凸包上。看网上的题解求凸包左下部分都是用的分治法。1.首原创 2017-12-22 18:14:50 · 441 阅读 · 0 评论 -
poj1912 A highway and the seven dwarfs【凸包+二分】
题目大意:给出n个点,m条直线,对于每条直线,问所有点是否都在该直线同一侧。解题思路:即是问n个点的凸包是否在直线同一侧。 若直线与凸包有交点,那直线与凸包的两个切点一定在直线两侧。 所以我们可以将凸包上每条直线的倾斜角求出,对于每条直线二分找到两个切点,判断两个切点是否在直线两侧即可。具体细节见代码注释。#include<iostream>#include<cstdio>#include<原创 2017-12-22 14:43:05 · 471 阅读 · 0 评论 -
bzoj1069 最大土地面积【凸包+旋转卡壳】
解题思路:讲真,这题数据有点水,要是只给一个凹四边形就gg了。 所以我们假设求出来的是个凸包……。 考虑O(n2n^2)枚举对角线,那么就是求以对角线为底上下两个最大的三角形,可以采用旋转卡壳的思想来做,注意到随着对角线转动,最优顶点也在同向转动,所以直接跳指针即可。#include<iostream>#include<cstdio>#include<cstring>#include<st原创 2017-11-25 10:12:11 · 301 阅读 · 0 评论 -
poj3348 Cows【凸包模板】
解题思路:求出凸包后用面积除以50即为答案。#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<cmath>#include<ctime>#include<queue>#include<vector>#include<set>using nam原创 2017-11-24 11:01:35 · 214 阅读 · 0 评论 -
bzoj1249 动态凸包【凸包+set】
解题思路:由于我用的是极角排序维护凸包,找极点要找初始凸包内部的点,所以用了double,然后就被无情卡精了……。 不过算法还是正确的。首先找一个初始凸包内部的点作为极点,然后按极角放入set,注意旋转超过180度的情况要特判。每加入一个点,就在set中找到它的前驱和后继(注意是环形的),先判断该点是否在已有凸包内,再判断它的前驱和后继是否在新的凸包上,不断删点直到满足为止,同时维护一下面积。贴一原创 2017-11-30 17:16:58 · 921 阅读 · 0 评论 -
bzoj5077: [Ctsc2016]时空旅行【线段树+凸包】
Description2045年,人类的技术突飞猛进,已经找到了进行时空旅行的方法。小R得到了一台时空旅行仪,他想用它调查不同 时空中人类的发展状况。根据平行时空理论,宇宙中存在着很多独立的时空,每个时空在下一个时间点还会分化出 若干个不同的时空。宇宙是一个三维空间,人类使用空间直角坐标系来描述空间中的一个位置,三维坐标分别是 x ,y,z。我们假设在初始的时空(编号为 0)中,人类存在...原创 2018-05-22 17:04:55 · 554 阅读 · 0 评论