模拟测试56
Posted hz-rockstar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟测试56相关的知识,希望对你有一定的参考价值。
T1:
对于同一种选取方案,在时间上是单调的。
如果单调下降,那么该方案的最优点在0,反之可以二分位置。
现在我们需要求得在某个时间上的前m小值,用nth_element即可。
时间复杂度$O(nlog\max(ans))$。
T2:
每条路径的意义就是两端的点权之和。
我们可以折叠所有点到根节点的路径,用$x_1$表示所有点的权值。
询问时,直接解出方程,判断是否有解或是否有无限个解。
根据折叠方程的特点,我们需要按深度分奇偶维护到根的边权和,可以用书状数组。
修改时直接子数加即可。
时间复杂度$O(nlogn)$。
T3:
先枚举右端点,在从右向左枚举左端点,同时用树状数组维护纵坐标的个数和前缀和。
两端上的点将纵坐标分成了许多区间,暴力枚举上边界所在区间,然后可以在左右端点上lower_bound求出下边界的上界区间。
然后通过区间内的点数及前缀和计算出贡献即可。
由于每个点都被计算不超过n次,所以整个算法的复杂度为$O(nmlogm)$。
以上是关于模拟测试56的主要内容,如果未能解决你的问题,请参考以下文章
csp-s模拟测试56Merchant, Equation,Rectangle题解