摘要:题目:传送门 题意 Srwudi 的家是一幢 hh 层的摩天大楼。由于前来学习的蒟蒻越来越多,srwudi 改造了一个跳楼机,使得访客可以更方便的上楼。 经过改造,srwudi 的跳楼机可以采用以下四种方式移动: 向上移动X层; 向上移动Y层; 向上移动Z层; 回到第一层。 一个月黑风高的大中午,D
阅读全文
摘要:题目:传送门 题意 给你 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
阅读全文
摘要:题目:传送门 题意 给你一个长度为 n 的排列 p,和一个长度为 n 的颜色数组 c,无限路径的定义为 i, p[i], p[p[i]], p[p[p[i]]],且 c[i] = c[p[i]] = c[p[p[i]]] = .........;排列 a 和排列 b 相乘得到的排序 c,满足 c[i
阅读全文
摘要:题目:传送门 题意: 给你一个长度为 N 的只由123 构成的字符串 a ,定义 Xi,j 满足: 思路: 推荐博客:博one 博two 第一个观察,最终的答案只可能是 0、1、2,然后,从 N = 2 起,Xi,j 就不存在 3 了,都是 0、1、2,那我们直接在输入的时候,就将 123 转换为
阅读全文
摘要:转载自:https://blog.csdn.net/qq_30277239/article/details/90348638 题目描述: 如果一个字符串正着读和倒着读是一样的,则称它是回文的。给定一个长度为N的字符串S,求他的最长回文子串的长度是多少。 输入格式 输入将包含最多30个测试用例,每个测
阅读全文
摘要:题目:传送门 题意:给你字符串 s ,问长度最大的字符串 t = a + b 是什么,其中,t 是回文串, a 是字符串 s 的前缀, b 是字符串 s 的后缀。 思路: 我们先把能构成回文的,前缀和后缀取出来,然后对剩下的字符串,求,最长的前缀回文,最长后缀回文,取两者最大即可。 #include
阅读全文
摘要:马拉车讲解 HDU 3068 #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, j
阅读全文
摘要:题目:传送门 题意:在 x 轴上,有 n 场演出,第 i 场在 xi 处,时间 ti 时表演,然后,有一个人,最快移动速度为 v,问你1、在任意处作为起点,最多能观看几场表演;2、在 x = 0 处开始,最多能观看几场表演。 1 <= n <= 1e5 思路: 参考 #include <bits/s
阅读全文
摘要:题目:传送门 题意:给一个整数 n (1 <= n <= 18),输入 2^n 个数,编号为 0~2^n - 1(即数组 c ),起初有一个整数 statu,它的前 n 位二进制位都等于 -1,现在有A和B两人,共操作 n 次,每次操作等概率选择 satu 一个二进制位为 -1 的位,将它变为 0
阅读全文
摘要:题目:传送门 题意:在一个 4 * n 的矩阵里,有 k 辆车,一开始所有的车都在第二和第三行,第一和第四行是车位,你一秒钟只能移动一辆车一步,问你有没有可能在 20000 秒内,将所有的车停到对应的车位上。 n <= 50, k <= 2n 思路: 我们首先将那些车位就在眼前的车,停进去,这时只要
阅读全文
摘要:题目:传送门 题目:给你三个字符串a, b, c,他们都是字符串 s 的连续子串,字符 '?' 可以是任何字符,问字符串 s 的长度最小是多少。 1 <= len(a),len(b),len(c) <= 2000 思路: 很容易的可以想到一个贪心,就是,按照 a -> b -> c 这样的顺序去构造
阅读全文
摘要:题目:传送门 题意: 思路: 图文博客 #include <bits/stdc++.h> #define LL long long #define mem(i, j) memset(i, j, sizeof(i)) #define rep(i, j, k) for(int i = j; i <= k
阅读全文
摘要:题目:传送门 思路: 求面积和求周长是一样的思路。 求面积的步骤可 戳 #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 的序列,满足: 1、序列上的每个元素 ai 都满足 1 <= ai <= m 2、恰好只有一对元素相等 3、存在一个下标 i 使得 aj<aj+1, if j<i, and aj>aj+1, if j≥i 思路: 长度为 n 的序列,且恰好有一对数相等,那么就
阅读全文
摘要:题目:传送门 题意:铁人三项比赛,给你 n 个参赛者在每一项比赛的速度 a[ i ] ,b[ i ], c[ i ],输出 n 行,第 i 行代表是否能通过改变三项比赛的路程,使得第 i 位参赛者是第一个到达终点的(唯一一个到达终点的)。 1 <= n <= 100, 1 <= ai, bi, ci
阅读全文
摘要:题目:传送门 题意:在一个凸多边形的卧室里,你要放两个半径都为 r 的圆形地毯,不能折叠,不能弯曲,可以相交,现在问你两个圆怎么放可以使得覆盖的总面积最大。输出两个圆心,有多种方案输出任意一种即可。 思路: 我们可以将多边形的每条边向里缩进 r 长度,得到一个新的多变形,再用半平面交求这个新的多边形
阅读全文
摘要:题目:传送门 题意:有一个多边形的岛,岛的四周都是海,问你岛上的点到离它最近的海的距离最大是多少。 思路: 这题实际上就是求多边形的核的最大内切圆半径。 求多边形内核用半平面交即可,关键是求最大内切圆半径。 可以让多边形的每条边向里缩进 x 个单位得到新的多边形,判断其是否存在内核。 可以二分这个
阅读全文
摘要:题目:传送门 题意:给你一个 n 个节点的多边形,问你是否至少存在一个点,使得在这个点可以看见多边形的边界上的所有点。 思路: 这题本质上就是求半平面交。 关于半平面交的讲解可以看这个博客:戳 #include <iostream> #include <stdio.h> #include <stri
阅读全文
摘要:题目:传送门 题意:有一颗 n 个节点的树,有 n - 1 条边,然后现在需要你构造一个排列 p1,p2,p3......,pn 满足对于任意的 (i, j) 如果节点 i 到节点 j 的最短距离等于 3 ,那么 pi * pj 是 3 的倍数或者 pi + pj 是 3 的倍数. 2 <= n <
阅读全文
摘要:题目:传送门 题意:有 n 个店,一开始你在家,此时 t = 0,你可以花 1 单位时间从你家去任意的一个店,或者从某一个店去到另一个店。假设你在 t = x 的时候到达第 i 个店,那么你需要花 ai*x + bi 的时间在这个店买东西。现在问你在 T 单位时间内最多能去几个店买东西。 1 <=
阅读全文
摘要:题目:传送门 题意:让你求 2 <= n <= 400000, 1 <= ai <= 10000000 思路: 对每个二进制位单独考虑,若答案的第 i 位二进制位是 1,意味着有奇数对 (j, k) 满足 (aj + ak) 二进制第 i 位是 1. 那么考虑怎么算有多少对 (aj + ak) 满足
阅读全文
摘要:题目:传送门 题意:一个点最初在(0, 0),给你它的运动轨迹,保证是一个多边形,问你这个多边形边界上的格点个数以及多边形内部的格点个数和多边形的面积。 思路: pick定理:一个计算点阵中顶点在格点上的多边形面积公式:S=a+b÷2-1,其中a表示多边形内部的点数,b表示多边形边界上的点数,s表示
阅读全文
摘要:题目:传送门 题意:求凸包面积 / 50 #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <queue> #include <map> #include <vector>
阅读全文
摘要:题目:传送门 题意:起初有很多点,可以确定一个凸包,现在只给你部分点,问你部分点确定的凸包是否一定和最初全部点确定的凸包一样。 思路: 题意就是问给你的 n 个点是否能唯一确定一个凸包。 这种凸包叫稳定凸包。这里有个博客讲得不错:戳 那么需要修改一下求凸包的模板,把那些共线的点也存起来,然后再判断是
阅读全文
摘要:题目:传送门 题意:给你 n 个数,然后你每次操作可以选择任意一个数 a[ i ],让它加 1 或者减 1,问最少需要操作几次,可以使得所有 a[ i ] 的 gcd 大于 1 2 <= n <= 2e5, 1 <= ai <= 1e12 思路: 考虑最后的 gcd = 2,那这样的话只要把所有奇数
阅读全文
摘要:题目:传送门 题意:有 n 棵树,第 i 棵树位于点 (xi, yi),有 vi 的价值, Li 的长度,现在你需要建一个篱笆,把所有树围起来,你只能通过砍掉其中的一些树来获得建篱笆的材料。现在问你能顺利建成篱笆需要砍掉的树的价值最小是多少,如果有多种价值一样小的方案,输出砍掉的树数目最少的情况。
阅读全文
摘要:题目:传送门 题意:你有 n 个人,你想从这 n 个人中选 p 个人去到不同的 p 个位置, 选 k 个人作为观众。如果第 i 个人被选为观众他的贡献就是 a[ i ],如果第 i 个人被选为第 j 个位置上的人,那么他的贡献就是 b[ i ][ j ]。问你选 p 个位置上的人和 k 个观众最大的
阅读全文
摘要:题目:传送门 题意:让你构造一个长度为 n 的序列,使得 1 < a1 < a2 < ...... < an <= 1e9,且满足 1 < i < j < k <= n && a[ i ] + a[ j ] = a[ k ] 这样的三元组恰好只有 m 个,如果不能构造输出 -1. 思路: 首先,让所
阅读全文
摘要:题目:传送门 题意:输入一个凸包的所有顶点,逆时针输出凸包的顶点 #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <queue> #include <map> #incl
阅读全文
摘要:题目:传送门 题意:有一个 n 多边形城堡,先需在城堡外建围墙,使得围墙到城堡的距离不得小于 L,且围墙的周长最小。 思路:答案就是凸包周长 + 半径为 L 的圆的周长。 证明 A、B、C、D四个点,每个点都有 360 度, 然后,角1、2、3、4构成多变形的内角和为 360度,然后每个点,又要减去
阅读全文
摘要:题目:传送门 题意:有一个房子(用一条线段表示),从马路(用一条线段表示)看房子,有许多障碍物(用线段表示),问在马路上连续的一段线段都能看到完整的房子最长是多长。 思路:就是求线段交点,然后,把那些交点按 x 排序,最后求答案即可。 有个陷阱就是障碍物可能不在房子和马路之间。 #include <
阅读全文
摘要:题目:传送门 题意:给你一个圆和一个多边形, 判断多边形是不是凸多边形,如果是,接着判断圆是否在凸多边形内部。 #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <queu
阅读全文
摘要:题目:传送门 题意:问存在多少 1 ~ n 的排列满足任意相邻的两个数互质,输出答案取余 mod。 1 <= n <= 28, 1 <= mod <= 30000 思路:很容易想到状压DP, dp[ i ][ j ]其中 i 是最后一个数要填的数,j 是当前使用过的数的状态,每一个二进制位对应一个数
阅读全文
摘要:题目:传送门 题意:给许多多边形, 判断多边形是否相交。 思路:输入输出挺恶心的,得模拟着做。 给正方形的对角线两点,求另外两点坐标可由下列四条式子推导得到: x1 + x3 = x0 + x2 y1 + y3 = y0 + y2; y1 - y3 = x0 - x2; x1 - x3 = y2 -
阅读全文
摘要:题目:传送门 题意: 思路: gcd(x, y) = 1 想到莫比乌斯 然后我们枚举 i, 然后枚举 j 是 i 的倍数, 那gcd(i, j) = i 然后对这些数,枚举有多少满足 第二个条件的,然后最后累加答案即可。 #include <bits/stdc++.h> #define LL lon
阅读全文
摘要:题目:传送门 题意:有一个 n 个拐点的曲折的管道,你有一束光射进去(直射),问你最远能射到点的 x 坐标是多大。 1 <= n <= 20 思路:首先需要想到,这条线肯定是经过管道的一个上拐点和一个下拐点。 然后就枚举所有情况就行了。 #include <iostream> #include <s
阅读全文
摘要:题目:传送门 题意:问在区间 [ L, R ] 中使用的数字不超过 k 种的数的和是多少,例如区间 [ 10, 50 ] 中使用的数字不超过 1 种的数的和是 11 + 22 + 33 + 44 = 110. 1 <= L <= R < 1e18, 1 <= k <= 10, 输出答案对 99824
阅读全文
摘要:题目:传送门 题意:你起初在(0, 0), 你想去点 (x, y), 你有一个长度为 n 的运动字符串,字符串由 L,R,U,D 组成。问你你需要怎么改字符串,使得你跑完这个运动字符串之后,恰好在 (x, y) 且需 MaxID(你改动的那些字符的最大下标) - MinID(你改动的那些字符的最小下
阅读全文
摘要:题目:传送门 题意:有 n 个糖果,第 i 个糖果卖 ai 块钱,你现在有 T 块钱,你每次都从第一块糖果开始看,如果你的钱数够买当前的糖果,那么你就会花钱买它,如果你看完了所有 n 块糖果,那么你会从 1 重新开始看,直到你的钱数小于最便宜的糖果的价格。 1 <= n <= 2e5, 1 <= a
阅读全文