随笔分类 -  构造

摘要:题目链接 CF750F New Year and Finding Roots *2800 解题思路 hint1 考虑将不同的节点类型分类。 hint2 考虑将不同度数的节点分类。 算法 1: 首先我们注意到度数为 \(2\) 的节点为根,于是我们直接 check 每个节点,特别的,可以不用 chec 阅读全文
posted @ 2025-04-15 22:52 wangmarui 阅读(24) 评论(0) 推荐(2)
摘要:题目链接 AT_arc122_c [ARC122C] Calculator 解题思路 hint1: 考虑构建斐波那契数列来解决问题。 hint2: 二进制。 hint3: 考虑如何解除后效性。 sol: 首先我们考虑如何构建斐波那契数列。 进行 1,2 操作中的一个,然后交替进行 3,4 操作即可。 阅读全文
posted @ 2025-04-09 15:15 wangmarui 阅读(16) 评论(0) 推荐(0)
摘要:题目链接 AT_arc121_c [ARC121C] Odd Even Sort 解题思路 首先特判 \(n \le 3\) 的情况,这部分直接模拟即可,略过。 对于 \(n > 3\) 的情况,我们直接把 \(4 \sim n\) 这些数字移到后缀,这里次数是 \(\displaystyle\fr 阅读全文
posted @ 2025-04-09 15:14 wangmarui 阅读(20) 评论(0) 推荐(0)
摘要:题目链接 CF109D Lucky Sorting 2000 (1800) 解题思路 我们考虑现将原序列离散化成排列,此时约束条件严格强于原题目,然后只找一个可以交换的数字,此时约束条件依然强于原题目。 那么此时我们考虑如何操作,设可以操作的数字为 \(id\): 如果此时数字 \(i\) 所在的位 阅读全文
posted @ 2025-02-18 10:54 wangmarui 阅读(7) 评论(0) 推荐(0)
摘要:题目链接 CF1738F Connectivity Addicts 解题思路 我们发现取度数大的点可以建的图显然最优秀,具体原因下面会讲,并且同一个连通块内的节点染成一种颜色一定合法。那么此时我们将所有节点从大到小排序,然后直接暴力建图即可,我们每次询问会存在两种情况,我们设询问到的节点为 \(x\ 阅读全文
posted @ 2025-02-13 23:02 wangmarui 阅读(14) 评论(0) 推荐(0)
摘要:题目链接 CF2040D Non Prime Tree 解题思路 挺好的题啊,赛时 10min 胡了个正解,但是 \(ans\) 数组打成 \(a\) 虚空调试 15min,怎么回事呢。 解法一 赛时做法。 可以看出当前无论怎么填,只要状态合法,那么一定有至少一种方案可以将整棵树都被填满,但是我不会 阅读全文
posted @ 2024-12-10 23:49 wangmarui 阅读(29) 评论(0) 推荐(0)
摘要:题目链接 CF1370F2 The Hidden Pair (Hard Version) (*2700) 题目描述 真的很难吗? 我们首先考虑找出第一个特殊点。 我们可以先求出这两个点路径中的任意一个点。发现询问 \(1 \sim n\) 就使我们需要的询问、 接下来以这个路径中的一个点为根来确定每 阅读全文
posted @ 2024-11-10 22:39 wangmarui 阅读(16) 评论(0) 推荐(0)
摘要:题目链接 AT_arc184_a Appraiser 解题思路 Q = 999: 我们考虑将第一个硬币与其余的硬币作比较,最后若交互库返回的 \(1\) 更多,那么说明第 \(1\) 枚硬币是假币,否则第 \(1\) 枚硬币是真币,直接存动态数组最后输出即可。 操作次数容易得出为 \(999\) 次 阅读全文
posted @ 2024-09-22 21:17 wangmarui 阅读(31) 评论(0) 推荐(0)
摘要:场切了,写篇题解纪念一下。 题目链接 CF1365G Secure Password 解题思路 首先有个非常显然的次数为 \(2 \times \log n\) 次的做法,就是我们根据二进制逐位考虑即可,那么为什么次数要乘上 \(2\) 呢,因为你在求出答案时,需要通过 \(0,1\) 两种不同的数 阅读全文
posted @ 2024-08-30 00:26 wangmarui 阅读(26) 评论(0) 推荐(0)
摘要:怎么题解区里都没有随机化的题解啊 /jy。 于是就有了这篇题解。 题目链接 CF862C Mahmoud and Ehab and the xor 解题思路 思路非常简单。 首先容易发现在 \(n = 1\) 时,直接构造一个 \(x\) 这个数即可。 其次我们考虑 \(n = 2\) 的情况,由于 阅读全文
posted @ 2024-08-29 15:39 wangmarui 阅读(18) 评论(0) 推荐(0)
摘要:题目链接 K-beautiful Strings CF1493C 解题思路 首先,如果原字符串是合法的直接输出原字符串即可。 然后我们考虑一个最简单的暴力,你枚举第一个你构造的字符串比原串大的字符的位置,再枚举这个字符,然后后面的肯定是从后往前贪心放即可,在此不再赘述。 这样的复杂度是 \(O(|S 阅读全文
posted @ 2024-08-24 23:50 wangmarui 阅读(22) 评论(0) 推荐(0)
摘要:duel 到的。 题目链接 CF1567D 解题思路 发现在越高的数位上,你获取的利益就会越大。 因此你肯定是每次将尽可能多的数分到最高的数位上是最优的。 但是你会发现,有可能你这样分数位后后面的数就分不到权值了,你只需要保证去掉当前分掉的权值之后,剩下可以分的权值不小于还剩下没分到的数字数量即可。 阅读全文
posted @ 2024-08-23 22:58 wangmarui 阅读(21) 评论(2) 推荐(0)
摘要:vp 到的。 题目链接 CF1889A Qingshan Loves Strings 2 解题思路 我们考虑从头到尾依次判断情况。 维护两个指针 \(l,r\) 来依次比较,直到有 \(a_l = a_r\)。 这种情况根据题目所述是不合法的,因此我们需要依次分讨一下两种情况: \(a_l = a_ 阅读全文
posted @ 2024-07-26 21:00 wangmarui 阅读(50) 评论(0) 推荐(0)
摘要:duel 到的。 题目链接 CF1015D Walking Between Houses 解题思路 一道细节题。 思路很简单,肯定是一开始能走的越多越好,因此就有一种较好实现的方案,先每次走 \(n - 1\) 格,但由于每次至少要走一格,因此如果不够走了就把能走的都走掉,之后全走 \(1\) 步即 阅读全文
posted @ 2024-07-15 20:45 wangmarui 阅读(26) 评论(0) 推荐(1)
摘要:upd: 哎哎哎,原来的题解没怎么写证明被叉了 /yun 所以我来补下证明。 upd2: 修改代码,增加代码可读性。 题目链接 P10678 『STA - R6』月 解题思路 时间复杂度优于官解的做法。 首先我们观察到一个性质就是 \(\sum a_i = 2 \times (n - 1)\),因为 阅读全文
posted @ 2024-07-02 16:51 wangmarui 阅读(28) 评论(0) 推荐(0)
摘要:链接 (Link) 一个好题。 就是说,你直接先求出这个数列的异或和,然后发现之后就可以两两匹配,如果无法匹配就默认这个数为 \(0\),然后做完了。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? 打 cf 阅读全文
posted @ 2024-05-31 13:01 wangmarui 阅读(21) 评论(0) 推荐(0)
摘要:题目链接 CF1977B (luogu) CF1977B (codeforces) 解题思路 考虑通用做法。 我们发现如果直接用二进制来表示的话这个数会只包含 \(0,1\) 这两个数字。 发现这时阻碍我们构造的是连续的数字 \(1\)。 考虑消除连续的数字 \(1\)。 容易发现连续的数字 \(1 阅读全文
posted @ 2024-05-28 21:14 wangmarui 阅读(28) 评论(0) 推荐(0)
摘要:链接 算简单题。 你发现最大值肯定可以用 \(n\) 次查出来。 然后可以证明 \(ans \le \frac{n}{k}\)。 总次数为 \(n + \frac{n}{k} \times k \le 2n\)。 代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心 阅读全文
posted @ 2024-05-20 21:08 wangmarui 阅读(29) 评论(0) 推荐(0)
摘要:对下脑电波。 题目链接(luogu) 题目链接(at) 发现我们可以找出所有 \(x\) 当且仅当 \(x\) 为质数且 \(x \bmod 5 = 3\),这样任意五个数加起来就必定为合数了。 代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp 阅读全文
posted @ 2024-05-05 22:10 wangmarui 阅读(33) 评论(0) 推荐(0)
摘要:链接 妙妙构造题。 很容易可以看出要构造出一种可以交换相邻两格数的操作。 这部分显然可以写个爆搜找到规律。 然后进行暴力操作即可。 代码也不长。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? */ #incl 阅读全文
posted @ 2024-04-01 20:51 wangmarui 阅读(41) 评论(0) 推荐(0)