看了这道题的其他题解,本蒟蒻发现大部分都是将其分成两道题二分加主席树做的,本蒟蒻便来分享一波自己的蒟蒻做法–用主席树维护二维矩阵的信息。
这道题全程用主席树,不过要分情况讨论,对于r=1的情况,直接上裸的主席树,对于r=200,c=200的情况我们用主席树来维护矩阵(0,0)到(x,y)的信息,它由(x-1,y)到(0,0)的信息加上(x,0)到(x,y)的信息得到。代码如下
1 | for(register int i=1;i<=r;i++) |
而对于查询,则像二维前缀和一样;
1 | inline int ask(int l,int r,int a,int b,int c,int d,int v) |
然而!这样写是过不了这道题的;
对于构建主席树的过程中,我们不停的更新root[x][y],导致大量节点只是一个过程量,空间被大量浪费,所需空间在这道题的极限情况下高达600+MB;
接下来,蒟蒻将展示代码(带注释),该问题的解决办法。
1 |
|
好了,题解到此结束。结束撒花!!
本文作者:
syrsteven
最后更新: 2023年09月02日 04:06:21
本文链接: http://syrsteven.github.io/post/e1a316a0.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可,转载请注明出处!
最后更新: 2023年09月02日 04:06:21
本文链接: http://syrsteven.github.io/post/e1a316a0.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可,转载请注明出处!