我会随机说话

· · 算法·理论

省选将至,如何翻盘?

尝试随机说话。

做题状态

困境

解决困境

某些常见想法

题目特征

我们知道,很多人自己学习 OI 时会把题目串起来学,而不是随机做题。专题这种训练方法也是非常常见的。

举个例子,这句话后面有一句透明的话\color{white}那么发现的人会觉得这是这篇文章的特征或突破点,但是不是。

我们可以从很多方向去描绘题目的特征。

下面是一大段例子,不想看可以跳过。

例子

题意:n 个点围成环,带权,每次操作环上相邻三个数 x,y,z 变成 x+y,-y,y+z。问你最少多少次操作可以使得所有数非负。1\le n\le 10^5,|a_i|\le 10^4

原题:CTT2019Day3T2。

考虑序列上的问题,考虑前缀和数组,发现进行操作相当于交换前缀和数组上的相邻两个数。若有解则相当于求逆序对。

用优美的方法推广序列结论到环上。

将序列复制无穷份并拼接在一起。定义当前这个序列前面第一个数是 0,接下来设总和为 S,初始序列(做了前缀和)为 a,则无穷序列为 ...,a-2S,a-S,a,a+S,a+2S,...

每次交换会交换无穷序列上与 i,i+1n 同余的位置。

做法二:

题解做法,很巧妙。

考虑推广之前说的逆序对结论:记录无穷序列中每个数前面比他大的数 R_i。求 [0,n-1] 中所有 R_i 的和。

为啥是对的?因为每次操作显然带动了无穷序列的操作,而 R 也是一个周期序列。

接下来就不需要分析策略了。直接计算 R

对于 i 枚举一个 1\le j\le n,则若 j\le i 则第一次出现时为 a_j,否则第一次出现时为 a_j-S

发现若 a_j>a_ij>i 时额外贡献 -1 即可。接下来不讨论 ji 的关系。

前提还是 a_j>a_i。若 a_j \bmod S> a_i\bmod S 则答案为 \lfloor\dfrac{a_j}{S}\rfloor-\lfloor\dfrac{a_i}{S}\rfloor。否则额外贡献 -1

两个二维偏序!可以做到 O(n\log n) 的优秀复杂度。

啥道理

这个题需要你先在环上把操作像链一样说的人话一点。

发现如果按照题解这么说就是链上结论的自然推广。

逆序对就看成势能的角度去算一个答案。

所以这个题的特征就在于题目和弱化版的关系,环看做无穷序列之后,逆序对也成了自然的推广。

题目难度评价

我暂且认为对题目难度的评价有助于学习。参考了 Lyz09 的想法。

其中:

这些题目如果自己不会做可以看整体通过率之类的进行评价。

对于 \color{00cc00}1+ 难度的题目,应当尽量不要出现。

对于 \color{00aa55}2- 难度的题目,应当尽可能多的出现,这种可能是自己赛后又独立想出来了(赛时可能时间不够),或者是赛时切了或者是差不多就会。当然如果不小心看了题解那只能变成 \color{00aa55} 2 级的题目了。

这种评价其实可能不准,因为可能自己再多想想就改变了评级。

更多评价

大致来讲,CSP 与 NOIP 的由我的评级如下:

:::info[CSP 2025]

社团招新:【0】

道路修复:【0】

谐音替换:【1+】

员工招聘:【1】

:::

:::info[NOIP 2025]

糖果店:【0】

清仓甩卖:【1】

树的价值:【2-】

序列查询:【2】

:::

如果你争就是我对,因为这个评级系统是主观评级。

如果按照我目前的期许,明年很多 2 级的题都会变成 2- 级,然后很多 3 级题就会降级到 2 级。

希望如此。

省选前的记录会放在这里。

关于题解

我认为,我以后的优质题解(水题解不算)需要具备以下几点:

或许比赛完后先不看题解也是一种选择?

关于笔记

因为竞赛太难了,所以学习笔记没法解决这方向的所有难题,但是可以对这个方向产生一个印象。

以后想题的时候可以通过枚举印象的方式思考。