摘要: //#pragma GCC optimize("-fdelete-null-pointer-checks,inline-functions-called-once,-funsafe-loop-optimizations,-fexpensive-optimizations,-foptimize-sib 阅读全文
posted @ 2024-12-25 21:01 Zheng_iii 阅读(54) 评论(0) 推荐(0)
摘要: 思路 看到 $ 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 阅读(11) 评论(0) 推荐(0)
摘要: 思路 CF 思维题。 因为我们要让边权值最小,所以可以利用贪心思想先将数组 \(d\) 进行升序排序。 然后再预处理出每一条边的权重。 其次我们来想一下如何处理答案,因为这道题说图中不能出现负环和重边,所以我们可以通过加反方向负边的方法来解决这道题。 因为对于一条边,这条边之后的所有点都会与这条边之 阅读全文
posted @ 2024-12-20 21:06 Zheng_iii 阅读(18) 评论(0) 推荐(0)
摘要: 思路 分别枚举连续子序列所有起点的可能。 用变量来记录左括号和右括号的数量,左括号 \(+1\),右括号 \(-1\)。 对于问号,则通过当前左括号和右括号的数量来判断应该变为右括号还是变为左括号。 当右括号数量大于左括号数量时,就可以停止枚举以当前起点为起点的连续子序列了,因为无论怎么枚举都是不合 阅读全文
posted @ 2024-12-20 21:05 Zheng_iii 阅读(10) 评论(0) 推荐(0)
摘要: 思路 你猜这个题为什么是 A 题? 很思维的解法。 只允许翻转一次,所以最多只会在原答案上加 \(2\)。 所以我们来讨论仅有的三种可能: 加 \(2\),要有两段连续的 \(0\) 或 \(1\)。 加 \(1\),要有一段连续的 \(0\) 或 \(1\)。 不加,没有连续的 \(0\) 或 \ 阅读全文
posted @ 2024-12-20 21:04 Zheng_iii 阅读(13) 评论(0) 推荐(0)
摘要: 思路 枚举三种能够得到该颜色的方法。 全是该颜色的卡牌。 另外两种卡牌的数量都大于等于一张。 另外的两种卡牌,一种大于等于两张,一种为零张,该颜色的卡牌大于等于一张。 我们用三个变量来记录每种卡牌出现的次数,然后按照以上的三种方法模拟即可。 AC 代码 #include<bits/stdc++.h> 阅读全文
posted @ 2024-12-20 21:04 Zheng_iii 阅读(20) 评论(0) 推荐(0)
摘要: 思路 看到这道题首先考虑贪心和动态规划。 贪心是不行的,因为这里有先减分再加分的数据,也就是说故意在 div1 的比赛掉分,使得下一次能够打 div2 加更多的分。 我们考虑动态规划,我们用 \(f[i][j]\) 表示在前 \(i\) 场比赛中得 \(j\) 分至少需要打几场比赛,就可以轻易推出这 阅读全文
posted @ 2024-12-17 14:16 Zheng_iii 阅读(26) 评论(0) 推荐(0)
摘要: 思路 经典抽屉原理。 对于长度大于 \(9\) 的子串,我们就可以认为它一定是好的,因为一定有两个数是相同的,它们可以互相整除。 对于剩下长度小于等于 \(9\) 的子串,我们对它们进行暴力枚举即可。 AC 代码 #include<bits/stdc++.h> using namespace std 阅读全文
posted @ 2024-12-17 14:15 Zheng_iii 阅读(30) 评论(0) 推荐(0)
摘要: 题目传送门 思路 我们可以在环中任选一点,然后在环内可以转到另一个点。因为起点自由选择,所以环中每个点都可以到达,由此我们可以得知环上的所有点都是必胜点。 我们把这个问题抽象为一张图,用拓扑排序判环即可。 AC 代码 #include<bits/stdc++.h> using namespace s 阅读全文
posted @ 2024-12-17 14:13 Zheng_iii 阅读(16) 评论(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 阅读(17) 评论(0) 推荐(0)