题解

cookiebus 2023-08-14 12:14:41 1 返回题目

30分:暴力枚举每一行在哪里,更新第行第列的最大值,

50分:我们对每一行建立一棵线段树,对于每一个,它能影响到的区间显然是,让线段树这个区间跟即可,等预处理完这个数组以后,遍历每一行的线段树累加答案即可。复杂度

一个细节是,(空位置)也有影响区间的。

85分(or 100分):我们还是用线段树,对于每一行,按从大到小的顺序来更新它的影响,那么这就是一个区间覆盖问题,把查询到的未被覆盖的区间直接在最终答案对应的线段树上更新即可。复杂度是一个的。因为担心有人被卡常,所以设置了85分的分数段。

100分:这个题是可以做到线性的,把刚才的问题改成单调队列就可以,具体的见https://www.luogu.com.cn/problem/solution/CF1208E。

一个彩蛋是,我造样例的时候故意让每一行的数字个数都很少,我猜会有人根据这个数据特性,直接暴力每一行的点,特判出对应的区间。

实际上造完样例以后我意识到了这个问题,改进了datamaker使得真实数据中有一些行的元素个数非常多。

{{ vote && vote.total.up }}