jcd 的网外净土
CF2103B Binery Typewriter CF2103B Binery Typewriter
一定会按下 $n$ 次键来打出 $n$ 个字符,所以减少操作步数的唯一路径是减少移动的步数,也就是让 0 和 1 尽量地连续。 注意到,只进行 $1$ 次反转操作最多只可能让移动的步数减少 $2$。故而,若整个序列 0 和 1 已经足够连续
2025-07-03
CF2104B Move to the End CF2104B Move to the End
注意到,不论顺序如何改变,整个序列的总和是不变的。也就是说,要让后缀和最大,也就是让前缀和最小。 注意到,不论怎么交换,对 $a_{n-k+1}$ 来说,永远都会被“挤”出去。 于是找到最大值想法便呼之欲出了:我们首先计算出前缀最大值,将前
2025-07-02
CF2114D Come a Little Closer CF2114D Come a Little Closer
考虑枚举是哪一个被移动。每次计算出所需的面积,取最小值即可。 注意特殊情况:如果这个矩形的面积小于 $n$,则说明这个矩形不够大,也就是说一开始的移动就不成立,此时需要添一条较短的边来补足。 直接枚举(中间还有搜索)的复杂度过大,考虑使用
2025-07-02
CF2117A False Alarm CF2117A False Alarm
简单题。 寻找到第一个关的门和最后一个关的门,计算二者之间距离后与 $x$ 比较即可。 #include <bits/stdc++.h> #define MAXN 11 using namespace std; bool closed
2025-07-02
CF2118C Make It Beautiful CF2118C Make It Beautiful
比较搞人的一道题目。 考虑比 $a$ 大的且二进制中 $1$ 的数目比 $a$ 的多的最小的数字 $b$。通过尝试可以发现,$b$ 的二进制中比 $a$ 多出来的那个 $1$ 恰好落在 $a$ 的二进制中最低位的 $0$ 所在的位置。 于是
2025-07-02
CF2118A Equal Subsequences CF2118A Equal Subsequences
记录一个取巧的做法。 由于序列 101 和 010 的数目相等,没有说不为 $0$。故而,可以考虑将这两个序列的出现次数钦定为 $0$ 进行构造。 由此可易构造一个前面 $k$ 个 1,后面 $n-k$ 个 0 的序列(当然也可以是前面 $
2025-07-02
CF2106E Wolf CF2106E Wolf
非常基本的二分思路,很考察对二分的理解。 根据二分法的基本原理可知:搜索每一个位置都有且仅有唯一一条搜索的路径。即,对于每一个位置来说,只要搜索到了这个位置,那么所经过的路径就是一定的。 故而,我们可以确定变换后的路径,“引导”着按照这条路
2025-07-01
CF2114F Small Operations CF2114F Small Operations
根据算数基本定理,有$$x = p_1^{a_1} p_2^{a_2} \cdots$$$$y = p_1^{b_1} p_2^{b_2} \cdots$$令 $g = \gcd (x,y)$,有:$$g &#
2025-07-01