随笔分类 -  题解

摘要:思路 看到 $ N \leq 1000$,我们立马想到 Floyd,把每个人都当作点,把传递小丸子所需的时间当作边权去建边。 最后直接跑一遍 Floyd 就好了。 AC 代码 #include<bits/stdc++.h> using namespace std; using ll = long l 阅读全文
posted @ 2024-12-20 21:17 Zheng_iii 阅读(9) 评论(0) 推荐(0)
摘要:思路 CF 思维题。 因为我们要让边权值最小,所以可以利用贪心思想先将数组 \(d\) 进行升序排序。 然后再预处理出每一条边的权重。 其次我们来想一下如何处理答案,因为这道题说图中不能出现负环和重边,所以我们可以通过加反方向负边的方法来解决这道题。 因为对于一条边,这条边之后的所有点都会与这条边之 阅读全文
posted @ 2024-12-20 21:06 Zheng_iii 阅读(10) 评论(0) 推荐(0)
摘要:思路 分别枚举连续子序列所有起点的可能。 用变量来记录左括号和右括号的数量,左括号 \(+1\),右括号 \(-1\)。 对于问号,则通过当前左括号和右括号的数量来判断应该变为右括号还是变为左括号。 当右括号数量大于左括号数量时,就可以停止枚举以当前起点为起点的连续子序列了,因为无论怎么枚举都是不合 阅读全文
posted @ 2024-12-20 21:05 Zheng_iii 阅读(5) 评论(0) 推荐(0)
摘要:思路 你猜这个题为什么是 A 题? 很思维的解法。 只允许翻转一次,所以最多只会在原答案上加 \(2\)。 所以我们来讨论仅有的三种可能: 加 \(2\),要有两段连续的 \(0\) 或 \(1\)。 加 \(1\),要有一段连续的 \(0\) 或 \(1\)。 不加,没有连续的 \(0\) 或 \ 阅读全文
posted @ 2024-12-20 21:04 Zheng_iii 阅读(9) 评论(0) 推荐(0)
摘要:思路 枚举三种能够得到该颜色的方法。 全是该颜色的卡牌。 另外两种卡牌的数量都大于等于一张。 另外的两种卡牌,一种大于等于两张,一种为零张,该颜色的卡牌大于等于一张。 我们用三个变量来记录每种卡牌出现的次数,然后按照以上的三种方法模拟即可。 AC 代码 #include<bits/stdc++.h> 阅读全文
posted @ 2024-12-20 21:04 Zheng_iii 阅读(11) 评论(0) 推荐(0)
摘要:思路 看到这道题首先考虑贪心和动态规划。 贪心是不行的,因为这里有先减分再加分的数据,也就是说故意在 div1 的比赛掉分,使得下一次能够打 div2 加更多的分。 我们考虑动态规划,我们用 \(f[i][j]\) 表示在前 \(i\) 场比赛中得 \(j\) 分至少需要打几场比赛,就可以轻易推出这 阅读全文
posted @ 2024-12-17 14:16 Zheng_iii 阅读(19) 评论(0) 推荐(0)
摘要:思路 经典抽屉原理。 对于长度大于 \(9\) 的子串,我们就可以认为它一定是好的,因为一定有两个数是相同的,它们可以互相整除。 对于剩下长度小于等于 \(9\) 的子串,我们对它们进行暴力枚举即可。 AC 代码 #include<bits/stdc++.h> using namespace std 阅读全文
posted @ 2024-12-17 14:15 Zheng_iii 阅读(24) 评论(0) 推荐(0)
摘要:题目传送门 思路 我们可以在环中任选一点,然后在环内可以转到另一个点。因为起点自由选择,所以环中每个点都可以到达,由此我们可以得知环上的所有点都是必胜点。 我们把这个问题抽象为一张图,用拓扑排序判环即可。 AC 代码 #include<bits/stdc++.h> using namespace s 阅读全文
posted @ 2024-12-17 14:13 Zheng_iii 阅读(10) 评论(0) 推荐(0)
摘要:题目传送门 思路 先处理距离近的炸弹,根据曼哈顿距离排一遍可。 bool cmp(node &a, node &b){//曼哈顿距离计算 return abs(a.x) + abs(a.y) < abs(b.x) + abs(b.y); } 根据坐标点的位置得出需要操作多少次。 for (int i 阅读全文
posted @ 2024-12-17 14:13 Zheng_iii 阅读(9) 评论(0) 推荐(0)
摘要:思路 对于一个凸多边形,它的任意内角一定小于 \(45\degree\) 。 如果每相邻两条边的叉积的符号相同就说明它们是顺时针或逆时针排列的,则可以判别出该四边形是否为凸四边形。 AC 代码 #include<bits/stdc++.h> using namespace std; using ll 阅读全文
posted @ 2024-12-17 14:11 Zheng_iii 阅读(29) 评论(0) 推荐(0)
摘要:题目传送门 思路: 经典 DFS + 回溯剪枝。 毕竟一看 \(n\leq14\), 第一时间肯定想到的是暴搜。 回溯法是一种经常被用在 深度优先搜索(DFS) 和 广度优先搜索(BFS) 的技巧。 其本质是:走不通就回头。 —— OI Wiki 在这道题中,我们的 DFS 每枚举一种状态都判断一次 阅读全文
posted @ 2024-12-17 14:10 Zheng_iii 阅读(9) 评论(0) 推荐(0)
摘要:题目传送门 问题陈述 AtCoder 公司办公室是一个由 \(H\) 行和 \(W\) 列组成的网格。让 \((i, j)\) 表示从上往下第 \(i\) 行和从左往上第 \(j\) 列的单元格。 每个单元格的状态用字符 \(S_{i,j}\) 表示。如果 \(S_{i,j}\) 为 #,则表示该单 阅读全文
posted @ 2024-12-17 14:10 Zheng_iii 阅读(94) 评论(0) 推荐(0)
摘要:题目传送门:P6614 蛋糕 Cake。 思路: 根据题目,我们可以得知 \(1\leq k\leq10^{12}\)。 当我们的一次函数斜率足够大时,可以把这条直线当作是平行于 \(y\) 轴的。 所以我们这里可以取到 \(k = 10^{12}\)。 然后,我们就要让直线的左上侧有 \(\dfr 阅读全文
posted @ 2024-12-17 14:09 Zheng_iii 阅读(14) 评论(0) 推荐(0)
摘要:首先,我们需要明确一个重要的恒等式: \[x \mid \neg a = 1 \]当 \(x = 1\) 时,\(x \mid \neg x = 1 \mid 0\) 的结果为 \(1\)。 当 \(x = 0\) 时,\(x \mid \neg x = 0 \mid 1\) 的结果同样为 \(1\ 阅读全文
posted @ 2024-12-17 14:08 Zheng_iii 阅读(21) 评论(0) 推荐(0)
摘要:今天 2024 秋令营 Day1 的 贪心 例题,来解释一下这道题贪心的思路。 首先输入一个整数 \(n\),表示需要处理的数字数量为 \(2^n - 1\),随后输入每个编号的代价,并将代价和编号存储在数组 \(a\) 中。接着,对代价进行排序,以便在后续处理中优先选择代价较小的数字。然后,使用一 阅读全文
posted @ 2024-12-17 14:07 Zheng_iii 阅读(17) 评论(0) 推荐(0)