20200722训练记录

打了 Comet OJ - Contest #9 & X Round 3的 D E 两道题

A发现树上走来走去很烦

但是考虑确定了每一步走第几个儿子以后走到哪里是可以算得

就是hash一下根节点到每个点每一步走的哪个儿子就好了,开个哈希表查一下结束点在哪里

于是我们就可以二分每次询问走到哪里结束

注意到带修,线段树上二分就好了

老板数据太水OJ暴力艹榜

卡常数所以要手写哈希表才能过

B发现n*d<=3e6感觉有东西但是A写了有点久没去想

大概就是一个点的子树中到他的不同的权值数量跟直属中叶子的个数有关

\(O(dw)\)级别的

所以每次可以暴力合并子树中不同权值数量并暴力计算不同子树的相互贡献

时间复杂度是\(O(min(n^2,(dw)^2))<=O(ndw)\)

然后用unordered_map会MLE我们需要释放空间

考虑以下这个骚操作

Map[i].clear();
Map[i].swap(Map[0])

这里Map[0]是一个空的Map

ztc巨佬说这样可以释放空间

但我还是MLE

于是考虑随机一个根开始dfs

我的种子取19491001过了

加油!继续自闭

posted @ 2020-07-23 12:17  deaf  阅读(110)  评论(0编辑  收藏  举报