随笔分类 - 题解
摘要:解析 在操作一时,最小值如果在最后一位,其无法更新任何数,会被删除;否则不在最后一位时一定会被其右侧更大的数更新。所以在操作一时,最小值一定会被更新掉。 同理,在操作二时,最大值一定会被更新掉。 由此,操作一决定了答案的下限,操作二决定了答案的上限。 所以可以得出贪心策略:先进行 \(m\) 次操作
阅读全文
摘要:一道字符串模拟题 总体分为两部分:读入和输出 输入 首先读入整个字符串,因为没有空格,所以可以 scanf scanf("%s",s); 依次扫描整个字符串 字母只起到分隔数字的作用,所以如果遇到非数字,直接跳过 if(s[i]<'0'||s[i]>'9') continue; 否则开始累计这个数,
阅读全文
摘要:CodeForces 上 AC 了但是洛谷上一直 UKE,我也不知道为什么,但我还是来写题解了。 思路 题目要求我们找出唯一不在正方形边上的点,很容易想到枚举每一个点,如果剔除这个点后剩下所有点都在正方形边上,那么这个点就是额外的那个点。 怎么检查所有点是否在同一个正方形的边上呢?我们可以记录所有点
阅读全文
摘要:思路 + 算法 首先,考虑读入到 \(a_i\) 时,如果要得到此时的最优解(指所有牛的编号不重不漏地覆盖 \([1,i]\) 的所有编号),对于第 \(i\) 头奶牛,因为在它前面有 \(a_i\) 头奶牛的编号小于它,所以第 \(i\) 头奶牛的编号应当为 \(a_i+1\)。 如果有一头新的奶
阅读全文
摘要:思路 根据题面,由于裁判可以随便出招,所以若 \(p\) 是作弊者裁判,所以关于 \(p\) 的所有对局都没有意义,无法得到任何有效信息。那么,如果确定 \(p\) 为裁判,则关于 \(p\) 的所有对局都可以忽略。 因此,再根据 \(\sout{N \le 500}\) 的数据,可以考虑枚举裁判
阅读全文
摘要:更易于理解的题面 给定一个整数 \(M\) ,对于任意一个整数集合 \(S\),定义“校验值”如下: 从集合 \(S\) 中取出 \(M\) 对数(即 \(2M\) 个数,不能重复使用集合中的数,如果 \(S\) 中的整数不够 \(M\) 对,则取到不能取为止),使得“每对数的差的平方之和”最大,这
阅读全文
摘要:分析 由题意得,开关灯的操作是可逆的,也就是说,在 \(6\) 步内可以变成灯全亮的游戏状态都可以通过将一个灯全亮的状态在按 \(6\) 步内按成。 简而言之,一个灯全亮的矩阵,在按 \(6\) 步或更少的步数后所能成为的矩阵即是所有的可还原游戏状态,且所按步数为还原的最小步数。 思路 从全亮的状态
阅读全文
摘要:题目要求给定一个可能正确的式子 \(a+b=c\),要求将其进行转换得到正确的式子。 因为题目要求“把等号左边移一根火柴棒到右边”,所以很容易看出有这几种情况是可以做到的: \[a+b=c \]直接就满足条件,不用移动。 \[\begin{cases} (a-1)+b=(c+1)\\ a+(b-1)
阅读全文
摘要:一看题目内容,这道题看似是道模拟,实际上确实是道模拟。 解析 题目中分四种类型:整数、逗号、空格、省略号。我们来分类讨论: 整数:无需处理,直接塞到 \(s\) 里面就行了。 逗号:往 \(s\) 里面加一组 , (即一个逗号加一个空格)。 空格:当两个整数内包含多个空格时,只保留一个。即只有前一个
阅读全文
摘要:这道题可以用 \(O(1)\) 的三元一次方程来做。 我们设 \(1\) 号节点的度为 \(a\),\(2\) 号节点的度为 \(b\),\(3\) 号节点的度为 \(c\);再设 \(1,2\) 号节点有 \(x\) 条连边,\(2,3\) 号节点有 \(y\) 条连边,\(3,1\) 号节点有
阅读全文
摘要:方法 1:暴力 用三层循环枚举每一种 \(i,j,k\) 的选择。 时间复杂度 \(O(T \times N^3)\),因为 $ 3 \leq n \leq 2 \cdot 10^5 $,所以明显不可取。 代码就不用了,因为我也没用暴力。 方法 2 根据 \(a\) 的个位来枚举 \(a_i,a_j
阅读全文
摘要:注:这应该是最快的题解了(总共 \(321\) ms)。 简化题意 判断一个序列是否满足:该序列和严格大于其所有连续子序列和(不包括原序列) 解析 【简化题意】中“严格大于其所有连续子序列和(不包括原序列)”,可以转化成“严格大于非原序列的最大连续子序列和”。所以我们只需要求出“非原序列的最大连续子
阅读全文
摘要:题目大意 能否将一个长度为 \(n\) 的数列分成 \(k\) 段,使每段的和相等?如果能,输出每段的长度。 解析 Yes 的情况 我们可以首先求出每段的和。我们知道,共 \(k\) 段,每段的和相等,所以每段的和就是总长度除以 \(k\)。 然后,我们可以在求出每段和后,重新扫一遍原数列,累加和并
阅读全文
摘要:思路 典型的贪心算法。 如果要用最少的步骤把原数列改成从 \(1\) 到 \(n\) 的有序数列,即:使数列里每个数与目标数列的差之和最小。所以可得: 将原数列排序 计算每个数与目标数列的差值 累加,输出答案 最终得到的答案是: \[\sum\limits_{i=1}^n{\lvert a_i-i\
阅读全文
摘要:题目翻译 如果两组名字内除原音字母(即字母 a e i o u) 外完全相等,那么就认为这两个名字是相同的。现在要求判断两个名字是否相同。 共有 \(n \ (n\!\le\!20)\) 组数据。对于每组数据,两行分别输入两个名字。 每组数据对应一行的输出,若两名字相同则输出 Yes,不同则输出 N
阅读全文
摘要:解析 在该题目中,经过其中 \(n-1\) 个点说明要去掉一个点不走。 要求经过 \(n-1\) 个点的最小距离,只需计算到最左边和最右边的最短距离即可,因为只要到达这两个点,就意味着其间所有的点全部都经过了一遍,符合题意。 那么“去掉一个点不走”,需要去掉哪一个点呢?这个问题可分为两种情况: 去掉
阅读全文
摘要:这是一道模拟题。 因为 \(1\leq q\leq 1000\),所以不需要做优化,直接暴力模拟就能过。 在如何判定可不可能做到这一点上则是唯一需要思考一下的。但是很容易就可以发现:如果 \(n\) 不是 \(2,3,5\) 的倍数且不为 \(1\) 的话,那么 \(n\) 自然也就不能再运算,也就
阅读全文
摘要:终于可以写一道如此复杂的题的题解了! 题目就是说, Alice 有一个边长为 \(a\) 正方形,所以她的大小应该是: \[\large a^2 \]而 Bob 有一个 \(b*c\) 的长方形,所以他的大小就应该是: \[\large b*c \](小学的几何知识,应该都懂...) 乍一看,数据范
阅读全文
摘要:简要思路: 使用 cin.getline 函数读入第一行的原文,用 80 次循环来把它分割成 8 段,存储起来。 接下来再用 scanf 来输入每个数字所对应的字符串。 最后就可以两层循环来检查每一段字符串是否和某个数字所对应的字符串相等啦! 提示: 检查字符串相等可以用 cstring 头文件里的
阅读全文
摘要:前言 线段树合并优化 DP 神题,虽然偏模板但整体难度较高。 前置知识:动态规划、树状 DP、线段树动态开点、线段树合并。 题目链接:点击此处。 DP 状态表示 首先这个题有一个极其诡异的 DP 状态,别问我怎么知道的,问就是各种试出来的。 先将所有权值排序,相当于离散化,注意这里为了简便用了一种特
阅读全文

浙公网安备 33010602011771号