
【算法】计算几何
文章平均质量分 85
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【CodeForces975E】Hag's Khashba
题目链接点击打开链接题目解法我们本质上需要处理的问题为将多边形悬挂于某顶点 AAA 处后,计算另一顶点 BBB 的坐标。可以考虑计算出原多边形的几何重心,那么,悬挂时重心应当位于顶点 AAA 的正下方。因此,可以由顶点 AAA 与顶点 BBB 和中心连线的夹角算得 ABABAB 的方向,从而计算 BBB 的坐标。时间复杂度 O(N+Q)O(N+Q)O(N+Q) 。#include&l...原创 2019-08-28 21:22:27 · 315 阅读 · 0 评论 -
【CodeForces497D】Gears
【题目链接】点击打开链接【思路要点】枚举一对线段,我们只需要判断旋转过程中,这对线段是否会有公共点。注意到 PPP 到 QQQ 的距离始终不变,并且这一对线段所成夹角始终不变,旋转的过程可以等价为 QQQ 绕 PPP 旋转,且多边形 BBB 的各点与 QQQ 的相对位置始终不变。因此,使得两条线段存在公共点的 QQQ 点的位置的集合即为线段 Ai−AjA_i-A_jAi−A...原创 2019-03-12 14:32:48 · 407 阅读 · 0 评论 -
【校内训练2019-03-07】Crazy Rabbit
【思路要点】一个点对圆的一对切点是一个圆上的区间。一对点的连线与圆相交的充要条件是这一对点对应的区间相互包含或互不相交。因此,问题等价于选出尽可能多的圆上的互不包含、两两相交的区间。枚举一个选中的区间,排序其余区间的左端点,求右端点的最长上升子序列即可。时间复杂度 O(N2LogN)O(N^2LogN)O(N2LogN) 。【代码】#include<bits/stdc...原创 2019-03-08 12:27:47 · 229 阅读 · 0 评论 -
【USACO】2018 December Contest, Platinum题解
**【T1】**Balance Beam【题目链接】点击打开链接【题解链接】点击打开链接【思路要点】考虑一个指数暴力,首先枚举每一个位置选择操作 111 还是操作 222 。记 EiE_iEi 表示从 iii 出发的期望收益。若在 iii 处选择操作 222 ,那么 Ei=AiE_i=A_iEi=Ai ,否则,令 iii 之前第一个选择操作 222 的点为 ...原创 2019-01-20 17:42:23 · 789 阅读 · 1 评论 -
【CodeChef】Imagine Polygons
【题目链接】点击打开链接【思路要点】首先显然的一点是当且仅当两个多边形在 xxx 轴上的跨度不一样,输出 −1-1−1 。考虑一个 xxx 轴上的坐标 iii ,在满足 x=ix=ix=i 的平面上的任意一点 (i,y,z)(i,y,z)(i,y,z) 能够被计入答案当且仅当 (i,y)(i,y)(i,y) 在 x−yx-yx−y 轴的投影多边形内, (i,z)(i,z)(i,...原创 2018-12-09 12:59:51 · 248 阅读 · 0 评论 -
【省内训练2018-10-26】游走
【思路要点】考虑一个指数暴力,首先枚举每一个位置选择 “见好就收” 还是 “得寸进尺” 。记 EiE_iEi 表示从 iii 出发的期望收益。若在 iii 处选择 “见好就收” ,那么 Ei=AiE_i=A_iEi=Ai ,否则,令 iii 之前第一个选择 “见好就收” 的点为 preprepre ,之后第一个选择 “见好就收” 的点为 sufsufsuf ,有 Ei=(i−pre)...原创 2018-10-26 18:48:40 · 229 阅读 · 0 评论 -
【CodeForces】CodeForces Round #517 (Div. 1 + Div. 2) 题解
【比赛链接】Div. 1Div. 2【题解链接】点击打开链接**【Div.2 A】**Golden Plate【思路要点】直接循环计算答案即可。时间复杂度 O(K)O(K)O(K) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 2e5 + 5;type...原创 2018-10-22 20:54:05 · 725 阅读 · 0 评论 -
【LOJ2329】「清华集训 2017」我的生命已如风中残烛
【题目链接】点击打开链接【思路要点】一个直观的思路是模拟该过程,当路上遇到环的时候通过类似取模的手段加速。注意到每绕一个环 LLL 的长度至少减半,因此绕环的个数不会超过 O(LogL)O(LogL)O(LogL) 。并且一个点如果在某一时刻不能够到,那么这个点就不会再被够到,所以找到一个环至多需要遍历 O(N)O(N)O(N) 个点,因此如果我们预处理每个点作为原点时极角排序...原创 2018-10-05 14:46:45 · 694 阅读 · 0 评论 -
【CodeForces】CodeForces Round #505 (Div. 1 + Div. 2) 题解
【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**Doggo Recoloring 【思路要点】 首先当N=1N=1N=1,答案为YesYesYes。 否则,当且仅当存在一个字符出现了至少两次,答案为YesYesYes。 时间复杂度O(N)O(N)O(N)。 【代码】 #include...原创 2018-08-23 14:18:38 · 534 阅读 · 0 评论 -
【CodeForces】CodeForces Round #405 (Div. 1) 题解
【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**Bear and Different Names 【思路要点】 首先生成NNN个不同的合法名字。 按照如下方式构造一组解: 保证前k−1k−1k-1个名字互不相同。 若si=YESsi=YESs_i=YES,令Ansi+k−1=AnsiAn...原创 2018-08-20 17:20:31 · 334 阅读 · 0 评论 -
【LOJ6409】「ICPC World Finals 2018」熊猫保护区
【题目链接】点击打开链接【思路要点】问题即求简单多边形内部距多边形顶点的最小距离最大的点。考虑构建多边形各个顶点的 VoronoiVoronoiVoronoi 图以确定距离一个给定点最近的多边形顶点。可以发现,所求的点一定是 VoronoiVoronoiVoronoi 图的顶点或 VoronoiVoronoiVoronoi 图的边与多边形边的交点。注意到 VoronoiVo...原创 2019-03-24 13:38:34 · 442 阅读 · 0 评论 -
【CodeForces】CodeForces Round #549 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接【A】 The Beatles【思路要点】任取一个合法的起始点,枚举所有可能的步长 lll ,计算步数 N×kgcd(Nk,l)\frac{N\times k}{gcd(Nk,l)}gcd(Nk,l)N×k ,取最优值即可。时间复杂度 O(NLogV)O(NLogV)O(NLogV) 。【代码】#incl...原创 2019-04-04 20:50:38 · 989 阅读 · 0 评论 -
【CodeForces645G】Armistice Area Apportionment
【题目链接】点击打开链接【思路要点】考虑找到使得 ∣PX−QX∣|PX-QX|∣PX−QX∣ 最小的 XXX , XXX 应为 PPP 关于 lll 的对称点 P′P'P′ 与 QQQ 所连直线与 lll 的交点,若两直线平行,则 XXX 可取无穷远处的一点。此时 ∣PX−QX∣=P′Q|PX-QX|=P'Q∣PX−QX∣=P′Q ,因此原问...原创 2019-04-12 15:33:18 · 355 阅读 · 0 评论 -
【CodeForces1070M】Algoland and Berland
题目链接点击打开链接题目解法可以用构造的方式说明,对于任意的输入,答案均为 YesYesYes 。在下文中,我们称 AAA 集合中的点为黑点, BBB 集合中的点为白点。对于 N=1N=1N=1 或 M=1M=1M=1 的情况,连接所有可行的边即可。否则,一定存在至少一个 iii 使得 ri≥2r_i\geq2ri≥2 ,考虑取 rir_iri 最大的白点 MaxMaxMax 作为...原创 2019-08-28 19:46:38 · 275 阅读 · 0 评论 -
【CodeForces1045F】Shady Lady
题目链接点击打开链接题目解法首先考虑对于一个给定的多项式,如何判定其是否存在下界。由于要考虑下界的问题,变量 x,yx,yx,y 中至少要有一个趋向于无穷。特判 x,yx,yx,y 中存在 000 的情况,接下来考 x,yx,yx,y 绝对值为正的情况。考虑枚举实数 kkk ,使得 ∣x∣k=∣y∣|x|^k=|y|∣x∣k=∣y∣ ,那么多项式中每一项的绝对值应当等于 ∣x∣|x|∣...原创 2019-08-28 14:00:04 · 348 阅读 · 0 评论 -
【CodeForces1167G】Low Budget Inception
【题目链接】点击打开链接【思路要点】考虑旋转时被卡住的情况,共有两种。111 、建筑的端点撞到地面。222 、建筑与建筑相撞。情况 111 只需要找到折点左右最近的建筑即可。考虑情况 222 ,可以发现,可能相撞的只有建筑的顶点,且若左侧建筑物距离折点为 xxx ,只有右侧距离折点 x−1,x,x+1x-1,x,x+1x−1,x,x+1 处的建筑可能与其相撞,若坐标值域较...原创 2019-08-28 13:47:04 · 253 阅读 · 0 评论 -
【LOJ3047】「ZJOI2019」浙江省选
【题目链接】点击打开链接【思路要点】对于 M=1M=1M=1 的情况,问题即为求半平面交。考虑 MMM 更大的情况,以 M=2M=2M=2 为例。首先去掉排名可以为第一的人,则要想取得第二,必须在剩下的人中获得第一,对剩下的人做一次半平面交。每个排名可以为第一的人领先半平面交上的所有人的 xxx 一定是一个非空区间,可以在形成的凸包上直接二分找到这个区间 [li,ri][l...原创 2019-06-16 12:20:27 · 681 阅读 · 0 评论 -
【省内训练2019-06-05】最大面积
【思路要点】考虑建出所有区间坐标和的凸包,则答案一定落在凸包上,三分即可。建出所有区间坐标和的凸包可以采用分治 +++ 闵可夫斯基和。时间复杂度 O(NLog2N+MLogN)O(NLog^2N+MLogN)O(NLog2N+MLogN) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN...原创 2019-06-10 12:31:11 · 243 阅读 · 0 评论 -
【LOJ3054】「HNOI2019」鱼
【题目链接】点击打开链接【思路要点】考虑枚举 A,DA,DA,D ,那么显然选择 B,CB,CB,C 和 E,FE,FE,F 的方案数是独立的。枚举 DDD ,将剩余点对 DDD 极角排序,按序枚举 AAA ,则选择 E,FE,FE,F 的方案数可以通过用哈希表维护一定角度内所有点到 DDD 距离的平方来实现。考虑选择 B,CB,CB,C 的方案数,我们要求 BC⊥ADBC\...原创 2019-04-23 13:54:41 · 604 阅读 · 0 评论 -
【校内训练2019-04-26】踢罐子
【思路要点】显然被选中的点受到的伤害总和为 4N(N−1)(N−2)4N(N-1)(N-2)4N(N−1)(N−2) ,考虑未被选中的点 DDD 对伤害总和的贡献。首先,线段 ADADAD 必须与线段 BCBCBC 相交,否则点 DDD 显然不存在贡献。其次,若 ∠CDB+∠CAB=π∠ CDB+∠ CAB=\pi∠CDB+∠CAB=π ,那么 DDD 对答案的贡献为 111 ,若 ∠C...原创 2019-04-26 19:52:33 · 215 阅读 · 0 评论 -
【CodeForces】CodeForces Round #502 (Div. 1 + Div. 2) 题解
【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**The Rank 【思路要点】 按照题意模拟。 时间复杂度O(N)O(N)O(N)。 【代码】 #include&lt;bits/stdc++.h&gt;using namespace std;const int MAXN = 100...原创 2018-08-13 15:33:05 · 361 阅读 · 0 评论 -
【CodeForces】CodeForces Round #503 (Div. 1) 题解
【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**Elections 【思路要点】 考虑枚举111号党派最终的得票,剩余部分我们可以通过贪心解决: 对于每一个得票数高于111号党派的党派,贪心地改变其代价最小的若干投票。 然后贪心地改变所有投票中代价最小的若干投票来补足111号党派的得票。 ...原创 2018-08-15 15:30:37 · 439 阅读 · 0 评论 -
【BZOJ5252】【2018多省省队联测】林克卡特树
【题目链接】点击打开链接【思路要点】问题等价于在树上选出\(K+1\)条点不相交的路径使得它们权值和最大。首先考虑一个比较显然的DP。记\(dp_{i,j,k}\)表示以\(i\)为根的子树中选取了\(j\)条路径,且点\(i\)的度数为\(k(k=0,1,2)\)的最大权值和。但这个DP状态数太多了,显然无法通过。仔细分析一下题目,我们发现,对于同一棵树,令\(f(x)\)为当\(K\)取\(x...原创 2018-04-10 20:58:38 · 377 阅读 · 0 评论 -
【BZOJ2178】圆的面积并
【题目链接】点击打开链接【思路要点】将X轴根据整点分成若干段,对每一段横坐标用自适应Simpson积分计算面积。时间复杂度\(O(Cnt*NLogN)\),其中\(Cnt\)为自适应Simpson积分的迭代次数。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 1005;const int INF = ...原创 2018-03-27 20:46:18 · 1252 阅读 · 0 评论 -
【BZOJ1502】【NOI2005】月下柠檬树
【题目链接】点击打开链接【思路要点】一个平面图形在平行光下的投影为它本身。因此,问题实际上是求解若干个圆以及他们每相邻两个的外公切线组成的图形的面积并。可以用自适应Simpson积分来解决这个问题。时间复杂度\(O(Cnt*N)\),其中\(Cnt\)为自适应Simpson积分的迭代次数。【代码】#include<bits/stdc++.h>using namespace std;...原创 2018-03-27 19:52:34 · 330 阅读 · 0 评论 -
【BZOJ2618】【CQOI2006】凸多边形
【题目链接】点击打开链接【思路要点】半平面交模板题。时间复杂度\(O(N*M*LogNM)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;const double eps = 1e-7;const double pi = acos(-1);template <typena...原创 2018-03-31 20:13:51 · 231 阅读 · 0 评论 -
【CodeForces605C】Freelancer's Dreams
【题目链接】点击打开链接【思路要点】显然有如下线性规划:$$ \left\{\begin{aligned}Minimize\quad \sum_{i=1}^{N}x_i\\Constraints\quad \sum_{i=1}^{N}a_ix_i≥p \\Constraints\quad \sum_{i=1}^{N}b_ix_i≥q\end{aligned}\right.$$其对偶问题为:$$ \...原创 2018-03-31 16:41:49 · 429 阅读 · 0 评论 -
【BZOJ5099】【POI2018】Pionek
【题目链接】点击打开链接【思路要点】如果我们得知了最终答案的方向,那么显然,我们会选取在该方向上投影为正的向量作为答案,而放弃投影为负的向量。虽然方向是无法枚举的,但不难发现连续的一些方向导致我们选择的向量集合是相同的,我们实际上只需要枚举这样的向量集合就可以了。将向量极角排序,并复制一份,用Two Pointers维护当前的向量集合即可。时间复杂度\(O(NLogN)\)。【代码】#includ...原创 2018-03-18 14:17:28 · 532 阅读 · 0 评论 -
【BZOJ3672】【UOJ7】【NOI2014】购票
【题目链接】BZOJUOJ【思路要点】令\(f_i\)表示从\(i\)出发到根节点的最小花费,\(s_i\)表示根节点到节点\(i\)的路径长度之和。那么,显然有方程:$$f_i=min_{s_i-l_i≤s_j}\{f_j+(s_i-s_j)p_i+q_i\}$$$$f_i=min_{s_i-l_i≤s_j}\{f_j-s_jp_i\}+s_ip_i+q_i$$其中\(j\)是\(i\)的一个祖...原创 2018-03-01 15:24:13 · 343 阅读 · 0 评论 -
【BZOJ1038】【ZJOI2008】瞭望塔
【题目链接】点击打开链接【思路要点】半平面交求出可行的区域(是一个凸型区域)。最优解只可能在\(x_{i}\)或凸型区域的顶点处取到,依次检查即可。时间复杂度\(O(NLogN)\)或\(O(N^2)\)。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 5005#define INF 1e18#define...原创 2018-02-18 20:24:24 · 406 阅读 · 0 评论 -
【CodeForces】CodeForces Round #463 (Div. 1 + Div. 2) 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】Palindromic Supersequence【思路要点】将字符串正反各打印一遍。时间复杂度\(O(|A|)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 5005;template <typename T> void rea...原创 2018-02-22 10:46:55 · 617 阅读 · 0 评论 -
【BZOJ4858】【JSOI2016】炸弹攻击 2
【题目链接】点击打开链接【思路要点】枚举发射源,将发射源当做原点,对敌人和激光塔极角排序。由于敌人纵坐标均为正,而其它点均为负,因此每两个角度差在\(\pi\)以内的激光塔内部的敌人的个数之和就是该发射源对答案的贡献。用前缀和以及Two Pointers可以在\(O(N)\)的时间内统计一个发射源的贡献。时间复杂度\(O(N^2LogN)\)。【代码】#include<bits/stdc++...原创 2018-04-16 18:22:17 · 499 阅读 · 0 评论 -
【BZOJ4445】【SCOI2015】小凸想跑步
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 200005#define EPS 1e-18struct point {long double x, y; };struct line {point a, b; long double k; };st...原创 2018-04-22 14:20:35 · 236 阅读 · 0 评论 -
【BZOJ2732】【HNOI2012】射箭
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 300005#define INF 1e15#define EPS 1e-18#define QPS 1e-15#define LPS 1e-13#define PI acos(-1)struct ...原创 2018-04-23 16:39:08 · 226 阅读 · 0 评论 -
【CodeForces】CodeForces Round #403 (Div. 1) 题解
【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**Andryusha and Colored Balloons【思路要点】 显然答案有下界:Max{di+1}Max{di+1}Max\{d_i+1\},其中didid_i为点iii的度数。 我们用构造的方式来说明这个下界是可以取到的。 将度数最大的点作为根...原创 2018-08-07 20:51:15 · 425 阅读 · 0 评论 -
【BZOJ4073】【WF2014】Buffed Buffet
【题目链接】 点击打开链接 【思路要点】 先考虑CCC类食物,我们可以得出一个显然的DP做法。 令dpi,jdpi,jdp_{i,j}表示考虑了前iii种食物,选取了恰好jjj个单位质量的物品,能够得到的最大美味值之和。 有转移: dpi,j=maxwi|j−k,k≤j{dpi−1,k+j−kwi∗ti−j−kwi∗(j−kwi−1)∗δt2}d...原创 2018-07-04 20:41:25 · 639 阅读 · 0 评论 -
【BZOJ5328】【SDOI2018】物理实验
【题目链接】点击打开链接【思路要点】旋转、平移坐标系,使得直线导轨为X轴。注意到所有线段互不相交,且与X轴没有交点。对一二和三四象限的线段分别做一遍扫描线,求出每一段在X轴可见的线段到X轴的投影点以及其真实长度和投影长度的比值,并将一二和三四象限的结果合并。我们放置激光发射器的位置是无限多的,但投影点的个数是有限多的,并且我们发现一定有至少一个最优解满足激光发射器的某一个端点恰好为一个投影点。Tw...原创 2018-05-31 13:36:48 · 525 阅读 · 0 评论 -
【BZOJ5317】【JSOI2018】部落战争
【题目链接】点击打开链接【思路要点】询问点\(c=(x,y)\)的答案为1当且仅当\(c\in \{a+(-b)|a\in A,b\in B\}\)。 求解两个点集凸包的闵可夫斯基和,然后判断询问点是否在求得的凸包中即可。 时间复杂度\(O(NLogN)\)。【代码】#include<bits/stdc++.h>using namespace st...原创 2018-05-24 15:02:48 · 752 阅读 · 0 评论 -
【BZOJ3533】【SDOI2014】向量集
【题目链接】点击打开链接【思路要点】考虑点积的几何意义,应当为向量的模长乘以另一个向量对其投影的长度。为了使投影长度最长,我们显然只会找点集的凸包上的点。同时,当极角相差在\(\pi\)以内时(也即点集是一个凸壳时),凸包上的点与所求向量的点积为一个单峰函数。用线段树维护向量集合,每个节点上维护其子树内所有点的上下凸壳。查询时在定位到的区间上三分,找到答案的最值即可。时间复杂度\(O(N*Log^...原创 2018-05-23 20:45:49 · 546 阅读 · 0 评论 -
【BZOJ5077】【UOJ198】【CTSC2016】时空旅行
【题目链接】BZOJUOJ【思路要点】我们发现所有星球的\(y\)和\(z\)坐标没有实质作用,问题仅和\(x\)和\(c\)有关。令询问给出的横坐标为\(qx\),那么一个属性为\((x,c)\)的星球被探索的代价为\((qx-x)^2+c=qx^2-2x*qx+(x^2+c)\)。显然\(qx^2\)只和询问有关,因此我们需要求\(-2x*qx+(x^2+c)\)的最小值,令\(k=-2x,b...原创 2018-06-04 13:38:24 · 309 阅读 · 0 评论