这题空间卡得比动态逆序对还恐怖……
发现这个东西不好简单地用数据结构维护,于是我们可以看一张图:
我们发现框起来的部分是所有满足 i+j∈[x+y,x+y+d] 的点对 (i,j)。
又发现,减去两块绿色的平行四边形剩下的蓝色三角形正是询问的结果。
于是思考一下,又发现这两块区域分别对应着 i<x,j<y 的点对。
而且,由于第一个限制,这两个条件不可能同时满足。
于是考虑树套树,第一层维护 x+y 的和,第二层开两棵分别维护 x,y。
卡一卡空间就好了。
代码:
1 |
|
这题空间卡得比动态逆序对还恐怖……
发现这个东西不好简单地用数据结构维护,于是我们可以看一张图:
我们发现框起来的部分是所有满足 i+j∈[x+y,x+y+d] 的点对 (i,j)。
又发现,减去两块绿色的平行四边形剩下的蓝色三角形正是询问的结果。
于是思考一下,又发现这两块区域分别对应着 i<x,j<y 的点对。
而且,由于第一个限制,这两个条件不可能同时满足。
于是考虑树套树,第一层维护 x+y 的和,第二层开两棵分别维护 x,y。
卡一卡空间就好了。
代码:
1 | #include <cstdio> |
Related Issues not found
Please contact @Alpha1022 to initialize the comment