标签:复杂度 算法 时间复杂度 现在 前缀 就是 路径 树状数组 log
T1:
对于同一种选取方案,在时间上是单调的。
如果单调下降,那么该方案的最优点在0,反之可以二分位置。
现在我们需要求得在某个时间上的前m小值,用nth_element即可。
时间复杂度$O(nlog\max(ans))$。
T2:
每条路径的意义就是两端的点权之和。
我们可以折叠所有点到根节点的路径,用$x_1$表示所有点的权值。
询问时,直接解出方程,判断是否有解或是否有无限个解。
根据折叠方程的特点,我们需要按深度分奇偶维护到根的边权和,可以用书状数组。
修改时直接子数加即可。
时间复杂度$O(nlogn)$。
T3:
先枚举右端点,在从右向左枚举左端点,同时用树状数组维护纵坐标的个数和前缀和。
两端上的点将纵坐标分成了许多区间,暴力枚举上边界所在区间,然后可以在左右端点上lower_bound求出下边界的上界区间。
然后通过区间内的点数及前缀和计算出贡献即可。
由于每个点都被计算不超过n次,所以整个算法的复杂度为$O(nmlogm)$。
标签:复杂度 算法 时间复杂度 现在 前缀 就是 路径 树状数组 log
原文地址:https://www.cnblogs.com/hz-Rockstar/p/11619694.html