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烧脑吧