摘要:题目:传送门 题意 思路 官方题解 #include <bits/stdc++.h> #define LL long long #define ULL unsigned long long #define UI unsigned int #define mem(i, j) memset(i, j, 
        
阅读全文
 
        
            
            
摘要:题目:传送门 题意 有三堆石堆,分别有 a, b, c 石子, 有两个人在玩游戏, 先手给出一个数 y,后手选择一堆石堆加上 y 的石子,后手不能连续两轮都选择同样的石堆。若后手操作完后,存在两堆石堆石子个数相等,则先手赢。若后手操作超过1000轮,则后手赢。 思路 首先,先手肯定能赢,我们假设 a
        
阅读全文
 
        
            
            
摘要:题目:传送门 题意 给一个长度为 n 的序列 A 和一个长度为 m 的序列 B,(m <= n),问你序列 A 中存在多少长度为 m 的子区间 [l, l + m - 1],满足 Al >= B1, Al+1 >= B2, .... ,Al+m-1 >= Bm; 1 <= n <= 150000; 
        
阅读全文
 
        
            
            
摘要:题目:传送门 题意 Roy 和 PMH 在玩游戏,给定一个长度为 n 的序列,Roy 选子序列的起点,PMH 选子序列的长度,Roy 希望子序列的平均值尽可能大, PMH 希望子序列的平均值尽可能小。假设两人都足够聪明,问 Roy 能获得的最大的平均值是多少,保留6位小数。 思路 结论:对于任何 R
        
阅读全文
 
        
            
            
摘要:题目:传送门 题意 输入 n (1 <= n <= 1000000000),问 n! 十进制形式末尾有多少个0; 思路 一般的思路就是,枚举 1 ~ n 中有多少个质因子 5 和 2,这样子做的复杂度是 o(nlogn)的,显然不行。 其实,我们只需要知道 1 ~ n 中,总共有多少个质因子 5 就
        
阅读全文
 
        
            
            
摘要:题目:传送门 题意 思路 对于 k <= n - 1 的情况,我们可以将全部的牌隔一个位存起来,也就是起初的时候,第 i 张牌,放在 b[ 2 * i - 1 ] 的位置。每次操作将第 i 张牌放到第 (i - 1) % (n - 1) + 2 = i + 1 的位置的下一位,即放到 b[ 2 * 
        
阅读全文
 
        
            
            
摘要:题目:传送门 题意 思路 先对时间 t 离散化,开线段树维护,对于入栈操作,我们对区间 [ t[i] , n ] 加 1,出栈操作则是减 1,线段树维护一个区间最小值。 对于查询操作,我们通过线段树可以很快的知道,当前时间点 t[i] 对应的栈的元素个数 x,然后, 我们要查询在 t[ i ] 时间
        
阅读全文
 
        
            
            
摘要:题目:传送门 博一 博二 #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, 
        
阅读全文
 
        
            
            
摘要:题目:传送门 题意 思路 官方题解 #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 的排列 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 转换为 
        
阅读全文
 
        
            
            
摘要:题目:传送门 题意:在 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
        
阅读全文
 
        
            
            
摘要:题目:传送门 题意:给定平面上n个点,找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的 2≤n≤200000 思路: 截取自洛谷题解的 -> 戳 #include <bits/stdc++.h> #define LL long long #define mem(i, j)
        
阅读全文
 
        
            
            
摘要:题目:传送门 题意:问有多少长度为 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 长度,得到一个新的多变形,再用半平面交求这个新的多边形
        
阅读全文