如果你把询问一拆四并且TLE on #7
查看原帖
如果你把询问一拆四并且TLE on #7
438168
OldVagrant楼主2022/4/17 22:42

不妨试着给树按照纵坐标升序排序,再把询问拆成两个 (a,0,c,b1),(a,0,c,d)(a,0,c,b-1),(a,0,c,d),其中第一个对答案的贡献为负,第二个为正。然后把询问按照纵坐标升序排序,用值域树状数组维护树的横坐标。对于每个(拆了之后的)询问 (a,0,b,c)(a,0,b,c),不断把树更新进树状数组里,直到树的纵坐标大于 dd ,然后差分一下就得到了横坐标在 (a,b)(a,b),纵坐标不大于 cc 的树的个数,最后对答案算贡献即可。
还有,不要离散化,不离散化的话空间也用就不到30MB,但是时间上会快很多很多。(讲个笑话,lz离散化用的空间是不离散化的两倍,开O2用的时间跟不离散化不开O2用的时间差不多)
优化后开O2喜提最优解,甩第二150ms,不开O2都能进最优解前三页

2022/4/17 22:42
加载中...