摘要:题目:传送门 题意 已知一个圆心在原点O的圆的半径,给你两个点P,Q,|PO| == |DO|,P,Q不在圆外。在圆上取一点D,求 |PD| + |QD| 的最小值。 思路 点在圆内,会比较难处理,若点在圆外,则只需分两种情况即可: 1.直线PQ和圆相交,那么D一定是直线PQ和圆的交点中的任意一个,
阅读全文
摘要:题目:传送门 题目 题意:给定两个圆的半径和圆心,它们是相离的,在这两个圆外给定一个点p,输出所有过点p且与已知的两个 圆外切的圆。 思路 根据圆的反演的一些性质,可以将过点 p 的圆与已知两个圆外切转化为过点 p 的直线,与已知两个圆外切。 圆的反演的一些性质: 1、过反演中心的圆,反形(经过反演
阅读全文
摘要:题目:传送门 题意 思路 有两种做法: 一.盲猜 a = b,那就直接二分 a,就完事儿了. 二.按照题解那样的思路,这个会比较难想一点吧。 #include <bits/stdc++.h> #define LL long long #define ULL unsigned long long #d
阅读全文
摘要:题目传送门 求覆盖 n 个点的最小圆 时间复杂度:o(n) 推荐博客: 博客1 博客2 #include <bits/stdc++.h> #define LL long long #define ULL unsigned long long #define mem(i, j) memset(i, j
阅读全文
摘要:题目:传送门 题意 思路 官方题解 #include <bits/stdc++.h> #define LL long long #define ULL unsigned long long #define mem(i, j) memset(i, j, sizeof(i)) #define rep(i
阅读全文
摘要:题目:传送门 题意 给你 n 个互不相交的圆的圆心和半径,问你最近的两个圆的距离是多少,T个测试。 2 <= N <= 50000 1 <= T <= 10 思路 参考博客 二分每个圆半径的增量,如果每个圆的半径增加了 mid 之后存在圆的相交,那么这个 mid 就偏大了,如果不相交,那么就是 mi
阅读全文
摘要:题目:传送门 题意 1 < =N < =4*10^5 思路 思路参考 -> 戳 代码参考-> 戳 #include <bits/stdc++.h> #define mem(i, j) memset(i, j, sizeof(i)) #define rep(i, j, k) for(int i = j
阅读全文
摘要:题目:传送门 题意 思路 每次询问 1 都是删除 1 个点,由于删除点对凸包的影响比较难搞,所以,我们可以用离线做法,将询问逆着来做,这样,每次询问 1 就相当于加入一个点,加入一个点对凸包的影响,是比较好维护的,可以用 set 存当前凸包的点,具体细节看代码。 #include <bits/std
阅读全文
摘要:题目:传送门 思路: 求面积和求周长是一样的思路。 求面积的步骤可 戳 #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <queue> #include <map> #i
阅读全文
摘要:题目:传送门 思路: 计算过程出处:戳 计算全部四个多边形的端点, 称之为 xminP, xmaxP, yminP, ymaxP。 通过四个点构造 P 的四条切线。 他们确定了两个“卡壳”集合。 如果一条(或两条)线与一条边重合, 那么计算由四条线决定的矩形的面积, 并且保存为当前最小值。 否则将当
阅读全文
摘要:题目:传送门 经典题 代码大部分参考了:kuangbin #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <queue> #include <map> #include
阅读全文
摘要:题目: BZOJ传送门 题目:洛谷传送门 题意: 邱老师有n只妖怪,每只妖怪有攻击力atk和防御力dnf两种属性。在某种环境中,妖怪可以降低自己k×a点攻击力,提升k×b点防御力或者,提升自己k×a点攻击力,降低k×b点防御力,a,b属于正实数,k为任意实数,但是atk和dnf必须始终非负。妖怪在环
阅读全文
摘要:题目:传送门 题意:给定平面上n个点,找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的 2≤n≤200000 思路: 截取自洛谷题解的 -> 戳 #include <bits/stdc++.h> #define LL long long #define mem(i, j)
阅读全文
摘要:题目:传送门 题意:给 n 个点,用矩阵将所有点覆盖,要求矩形宽度最小,输出宽度。 思路: 参考自 -> 戳 旋转卡壳 + 点到直线最短距离 最远距离是点到点;宽度是点到边。 #include <iostream> #include <stdio.h> #include <string.h> #in
阅读全文
摘要:题目:传送门 思路: 出处 - > 戳 平移: 1 0 0 tx x x+tx0 1 0 ty * y = y+ty0 0 1 tz z z+tz0 0 0 1 1 1 缩放: scale kx ky kz kx 0 0 0 0 ky 0 0 0 0 kz 0 0 0 0 1 旋转: 绕任意轴(过原
阅读全文
摘要:题目:传送门 题意:给你一个 n 个点的折线,每一次变换把折线上的每条线段都变成最初给的折线形状,重复 d 次,问从第一个点沿着线断走全长 * f,最终到达哪个点。 思路: 大部分参考了 -> 戳 令 tmp = (折线的全长) / (第一个点到第 n 个点的直线距离), 那么一条线段变成最初给的折
阅读全文
摘要:题目:传送门 题意:在一个以原点为圆心的圆中,给你圆上的一个点,让你再选两个点, 使得这三个点构成的内接正三角形周长最大。 思路: 圆周长最大的内接三角形是正三角形:证明 面积最大的内接三角形也是正三角形:链接 那只要将点逆时针旋转 120度 和 顺时针旋转 120 度 得到的两个点就是答案了 #i
阅读全文
摘要:题目:传送门 题意:有一个凸多形面包,有一罐牛奶,牛奶高度为 h,认为牛奶的宽度无限长,现在你最多可以蘸 k 次牛奶, 问你蘸到牛奶的面包的面积最大是多少。 3 <= n <= 20, 0 <= k <= 8, 0 <= h <= 10 思路:dfs 枚举凸多边形蘸牛奶的 K 条边,将这些边向内缩进
阅读全文
摘要:题目:传送门 题意:在一个以 (0, 0) 为左下角,以(10, 10) 为右上角的正方形中。正方形的某个点藏着东西,你会猜测这个东西在哪里。起初你在点 (0,0),随后给出最多 50 个点,表示的是你猜测的点,然后还会输入一个字符串,若输入的是Hotter,表示你当前所在的点离那个东西的距离比你之
阅读全文
摘要:题目:传送门 题意:铁人三项比赛,给你 n 个参赛者在每一项比赛的速度 a[ i ] ,b[ i ], c[ i ],输出 n 行,第 i 行代表是否能通过改变三项比赛的路程,使得第 i 位参赛者是第一个到达终点的(唯一一个到达终点的)。 1 <= n <= 100, 1 <= ai, bi, ci
阅读全文