「晚测反思」2020-11-26 点亮

T1

更新的本质是把当前点向后的所有的值域上的数构成的逆序对清空

那么影响应该是后面所有的清空,前面比这个点大的减掉这个点的答案

考虑每次更新之后矩形框的答案

更新之后矩形框就空了,所以答案就没有了

存在答案的点的减少的总量是 (O(n))

考虑如何维护这个值

(vector) 存下来所有的位置,每个点带着一个答案

考虑更新的时候遍历所有比这个点小的 (vector)

在每个点里面二分得到 (sum),并且删掉所有的对应位置


以上是考试的时候的思路,因为数据是随机的,所以过掉了

然而两个序列都上升直接卡飞

正解其实类似,考虑用线段树来维护区间的最小值之后推平就行了

因为每个点只会被删掉一次,所以就是 (Theta (nlog n))

考场上有个变量没清空,所以少了 (40)

T2

这题目更坑,直接 (40 o 0)

具体原因很可笑,我读入的时候根本没有读进来 (b) 数组

没看清输入格式直接乱打一通


以下正解,会了多少就写了多少

首先这种随机的树有一下性质:

(1.) 深度是 (log n)

(2.) 子树大小 (siz_ile frac{n} u)

(3.) 树上每个点的度数是 (log n) 级别的

这里的状态定义是利用了深度很小来做的:

(f_{x,st}) 表示从 (x) 到根的状态为 (st) 的时候 (x) 可以贡献的美丽度

(其实挺懵的,并不懂题目里的限制用这个状态怎么处理的,不过是符合那个啥小压啥的原则……)

然后设 (g_{x,st,i}) 表示 (x) 的子树里面有 (i) 个点被点亮同时 (x o rt) 的状态是 (st) 的方案数

这个转移考虑树形 (dp) 做背包即可

这题目转化真狠,理解起来十分费劲

原文地址:https://www.cnblogs.com/yspm/p/14057040.html