12月4日简单赛题解(中转题解)

T1:

考虑正着操作把节点删去十分不方便,不妨考虑时间回溯(逆着来)

我们考虑一张图,我们现在依次加入\(n-->1\)的节点,然后用并查集统计一下该图的连通块数量就好了(是一个非常简单的trick)

T2:

发现题目给定的操作有只有一种修改,\(num_x = \phi(num_x)\),考虑一下这个操作有没有什么特殊的性质。

显然是有的吧、、

通过感性分析,理性打表,可以发现:

对于一个位置\(x\) , 至多执行 \(log(num_x)\)\(num_x = \phi(num_x)\),之后\(num_x\)将会为\(1\),之后再怎么操作都是1了

考虑上面这个性质的推导:

不妨对于一个数\(x\)进行一下分类讨论

\(x为一个质数\)\(\phi(x) = x - 1\)

x为一个合数,可以发现在这种情况下 \(\phi(x)至少减小至x的一半\)

根据上述分析,很显然上述修改至多有\(log\ num_i\)次有效

(其实这是一个非常简单的trick)

然后又因为有区间修改,区间查询,不妨考虑用数据结构维护

类似于 线段树开方一样的操作就好了

以下是赖神的题解

T3:

[Celeste-B] 草莓 的题解

这是一道关于 \(\text{Celeste}\) 的题。

我们求的是区间 \(\gcd\) ,因此 \(a_i\) 不含有 \(K\) 的我们都可以不予以考虑且不会被包含在最终答案内。

考虑预处理出以每一个 \(a_i\) 为结尾的区间左端点最近和最远分别能到达的位置。

最近的不太好处理,这里考虑倍增,牺牲一个 \(\log n\) 辅助二分找 \(\gcd\) 即可。

接着将这些区间写成 \((l,r)\) 的形式,我们发现这唯一对应平面上的一个点坐标,因此想到二维数点来维护它。

具体的,将这些区间按照 \(r\) 离线排序处理,之后类似扫描线一样逐个扫,将第二维的 \(l\) 作为下标在线段树上 \(+1\)

但这样区间会有很多,时间仍然不是最优的。

注意到对于一个 \(r\)\(l\)连续的一段区间 \([x,y]\) ,因此我们使用区间加法维护即可。

总时间复杂度 \(O(n\log^2 n)\)

相关代码连接

后记:

我真的想不到会因为这件事退役。

心理负担肯定有,但也没多大。以后要走的坎还多的多,这只是其中的一个而已。

祝你们今后的 \(\text{oi}\) 之路越走越顺,前途似锦。

再见。

总结:

我T1特意弄了一个阴间数据,卡了一些很强的选手,并且把他们卡成了90分,比如说周*杰(赞不赞?)

我T2特意出了个很简单的trick,不会的真的应该反思下

赖神写的T3,我看了一下,也比较简单吧

就其实吧,学oi的话,学板子真的只是最简单的一步,系统化的刷一系列类型考点相似的题目只是第二步,真正重要的是思维逻辑推断能力的培养吧(比如说做一下https://www.cnblogs.com/xyz32768/p/14172437.html这个博客里面的题目,这才比较oi吧),拿一些生活中的例子:

比如说学了oi之后,有一个很好的推断能力,有时候whk老师隔天布置的作业是可以提前推断出来的(就可以提前卷掉),以及whk一些逻辑推断题吧。

再或者是,今天早上宿舍不是查违禁品嘛?你很显然下到三楼就可以根据楼下的人流推断出来吧(所以我的违禁品就没事)

肤浅点说的话,享受动脑的感觉吧,这总比whk烧脑吧

posted @ 2021-12-04 14:46  After_rain  阅读(88)  评论(0)    收藏  举报