挺懵的,题大概赶上了但是还是感觉理解不够。
交互题真好玩hhhh
一,板子
对不起我太懒了
二,题解包
《洞穴勘测》:考察联通性的板子题
《树的维护》:考察边化点和标记的下传以及灵活运用
《tree》:标记的先后顺序
《水管局长》:$lct$维护最小生成树,无法删边,所以考虑时光倒流
《情报传递》:这题是主席树的题hhhh
以上都可能比较水所以不合各位的胃口
《GERALD07加强版》:运用了联通块==点数-边数
但只适用于森林,所以考虑如何干掉环。
看到区间所以考虑主席树,$lct$用来预处理,我们只需要这个区间中有用的边有多少。
维护一个数组$pre$,代表第$i$条边可以代替的最早的边的编号。
特别的,自环边的$pre$设为自己。
然后用主席树维护$pre$,对于每个询问查询$(x,y)$即可得到无用边数。
《魔法森林》:答案是$a+b$。然后发现可以枚举$a$,接下来维护最小生成树即可。
《在美妙的数学王国中畅游》:$lct$板子+数学知识,个人认为$lct$是次要的,起辅助作用。
主要考察泰勒展开将函数转化成多项式。
《LCA》:无法一次求出多个$lca$所以我们考虑将深度柿子换掉。
不会倍增$lca$时,我们考虑求$lca(x,y)$时会将$y$暴力上抬然后打标记,再将$x$上抬第一个遇到的就是$lca$。
再想想深度,$d[x]$就是$x$到根的路径上点的个数。
也就是说,每一个点$i$所做的贡献,就是在它下面的$lca$的个数。
转化一下问题,变成“给定$l$,$r$,$x$,将$[l,r]$区间里的节点到根路径上的点权值$+1$,求$x$到根节点路径上的权值和”。
为了不让在$[l,r]$区间外的点做贡献,转化成差分形式即$[1,r]-[1,l-1]$,即可用$lct$维护。
但不知道为什么我的lct写法需要将左端点为$1$的情况判掉。
今天早上我懵逼了将近三个小时,脑子里面一团浆糊。
《即时战略》:做过的第一道交互题
根据数据范围可知树形的探索次数是$nlog$的,链的是$n$的。
链:维护最左端和最右端然后爆跳即可,期望错误次数是$log$但我不会证
树:用$lct$维护,然后在$splay$上二分。这个理解了半天。。。
大概就是是前驱走左儿子,是后继走右儿子,到过就直接跳根,没到过新建并连虚边。
三,总结
1,做题将可行方案列出一个个考虑周全
2,要学会运用之前见过的性质和结论
3,做好一个蒟蒻该做的事,尽量赶进度
4,被消费