T1:
套路题,考虑处理树上路径的几种方法
树链剖分与点分治适用范围较广,新学习的重构树
适用于解决路径极值问题,这道题显然可以用树链剖分
考虑问题转化为如何判断路径点集,能够想到无序
哈希,树状数组维护即可
注意模数要大于字符集
这道题考场处理的较好,在50min完成码+调+拍+查。
T2:
目前只会部分分,正解为可撤销并查集+线段树分治
这道题考场处理的不好,花费了一些时间纠结打T3部分
分还是卡常,最终选择打T3部分分(正确选择),考场
上遇到类似情况一定要先把能拿的分拿完在思考部分分
与正解
对于自定义STL容器,重载运算符时一定要注意重载
所有元素的比较,避免出现之比较一维导致错误
T3:
部分分很好想,考虑期望转化为每一点对的贡献,
即概率,裸式子。
对于不存在-1的部分分,考虑是显然的CDQ分治,
注意使用归并排序可以降低log复杂度,原理在于归并
过程中左右两侧分别有序,于是单调指针维护,在回溯
过程中顺便维护即可
正解拓展性并不大,本题只能当做思维题
考虑本题偏序的特点,即三维偏序相同,考虑将其
拆解为二维偏序的O(nlogn)复杂度,即考虑分别对三组
做二维偏序,考虑对于两个数,其三维一定偏两序或三
序,前者会造成一次贡献,后者会造成三次贡献,因此
我们求三组偏序和减去点对数再除以二即为偏三序的情
况。
仔细思考可以发现,若求偏二序则不能使用此方法,
而二维偏序的完全没有必要,相比之下,战神的解法普
适性更强,考虑容斥原理,子集容斥即可,尽管对于此
题而言实现较为复杂,然而实用性显然更强