题意:1000*1000的格子, 坐标为(1, 1) ~ (1000, 1000), 常数 A, B, 点(x, y)权值为 (x + A) * (y + B),
q次询问, 每次询问(0, 0) (p, 0), (p, q)的直角三角形内的权值和。
作法: 离线处理, 把所有点和询问放到一起, 按斜率从小到大排序,
考虑每个询问, 那么对当前询问有贡献的点的斜率肯定小于等于该直角三角形斜边的斜率, 所有遇到一个点加入到树状数组, 然后每次询问就是取 区间和了。
时间: 2024-10-25 11:59:33