上一页 1 2 3 4 5 6 ··· 8 下一页
摘要: 最近正在练构造题,写篇题解分享一下实现的细节。 核心过程 大胆猜测,不难发现一个重要的结论:假设有一个式子 \(a+a-0\),则其从左往右的结果为 \(2a\),从右往左的结果为 \(0\)。有了这个结论,我们就可以考虑用两段这样的式子来分别求得 \(p\) 和 \(q\)。接下来分析细节。 上述 阅读全文
posted @ 2024-01-25 16:51 liyilang2021 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 看完题目后,发现直接对 \(a\) 模拟操作的情况过多,不好处理。但如果对 \(n\) 进行逆向操作,似乎可以在很少步数内就变为 \(1\)。我们大胆猜想,用最少的步数使 \(n\) 变为 \(1\),再考虑如何处理多余的次数(若次数不足则直接无解)。先列出转换后的操作: \(n\gets n + 阅读全文
posted @ 2024-01-20 18:18 liyilang2021 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 蒟蒻太菜了,看不懂图论的做法,就只好找规律了。 分析题目,可以得到一些信息:\(n\) 个不同的数最多能组成 \(\dfrac{n(n-1)}{2}\) 个不相同的无序二元组,而一个 $n \times n $ 的下三角形同行相邻的数对数量为 \(\dfrac{n(n-1)}{2}\),因此可以确定 阅读全文
posted @ 2024-01-20 18:17 liyilang2021 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 不难想到,求区间和可以先 \(O(n)\) 预处理前缀和,后面就能做到对于区间 \([l,r]\) 可以 \(O(1)\) 求出 \(\sum_{i=l}^r a_i\)。接下来考虑如何求解答案。 设预处理后的前缀和数组 \(sum_i=\sum_{j=1}^i a_j\)。 区间 \([l,r]\ 阅读全文
posted @ 2024-01-20 18:16 liyilang2021 阅读(3) 评论(0) 推荐(0) 编辑
摘要: Update on 2023.8.17:修正了一处小错误。 分析题目可知,答案至少为 \(\sum_{i=1}^{n} a_i\)。接下来考虑怎样使答案更大。 可以对 \(n\) 分成如下几类情况讨论: \(n=2\) 这种情况十分简单,如果选择操作最多一次,否则两次就会变为 \(0\)。用 $ \ 阅读全文
posted @ 2024-01-20 18:16 liyilang2021 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 考虑将 \(1\) 号点定为树根,然后通过搜索确定结点之间的父子关系。对于每次操作,先判断该边两端的点的父子关系,然后再分类讨论进行操作。 如何维护每个点的点权呢?注意到,修改有很多次,但查询只在最后有一次,因此可以考虑树上差分。具体地,设 \(a_i\) 表示 \(i\) 的点权,\(f_i\) 阅读全文
posted @ 2024-01-20 18:15 liyilang2021 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 不难想到,可以枚举每个 \(a_i\) 的倍数,并用一个数组统计出现次数,最后求最大值,理论时间复杂度 \(O(n \log n)\)。但如果 \(a_i\) 较小且重复出现,可能退化到 \(O(n^2)\)。因此可以做一个小优化:对于每个 \(a_i \le n\),提前统计出每个数出现的次数,枚 阅读全文
posted @ 2024-01-20 18:15 liyilang2021 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 根据题意,不难想到贪心,将 \(a\) 从小到大排序,使得相邻两数之差的绝对值尽可能小。若存在两数之差的绝对值大于 \(k\),则将两数之间作为一个“分界线”。在确定所有“分界线”后,序列被分成了多个子段,这些子段中最多保留一个才能满足条件。根据贪心,选择保留最长的一段,用 \(n\) 减去其长度即 阅读全文
posted @ 2024-01-20 18:14 liyilang2021 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 要找到这个单词,就要先找到这个单词的开头,在输入时即可判断。根据题意,保持列数不变,增加行数,直到不为字母,输出途经的字母即构成了单词。 #include <bits/stdc++.h> #define int long long using namespace std; char a[9][9]; 阅读全文
posted @ 2024-01-20 18:14 liyilang2021 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 签到题,按照题意模拟即可。遍历整个数组,当 $a_i \le 10 $ 时,用 \(b_i\) 更新最大值即可。 #include <bits/stdc++.h> #define int long long using namespace std; signed main() { int T,n,a 阅读全文
posted @ 2024-01-20 18:13 liyilang2021 阅读(1) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 8 下一页