P16575 古神线段树·改
题目背景
古神线段树太难了,出题人做不出来,于是改了一下。
题目描述
- 一条直线表示为 $(sx, sy, tx, ty)$,保证 $sx \not= tx$。
- 一条直线的出现,会点亮所有整点 $(x, y)$,满足:
$$
y \cdot (tx-sx) \cdot \big( (ty-sy)\cdot(x-sx) - (tx-sx)\cdot(y-sy) \big) \ge 0
$$
- 一个已经被点亮的点不会熄灭,也不会被点亮第二次。
有 $n$ 次操作。一次操作可能为:
1. 添加一条直线。
2. 查询在一个矩形区间内被点亮的点数。
每个测试点包含多组测试数据。
输入格式
第一行两个正整数 $c,T$,表示测试点编号和数据组数。在样例中,$c$ 为最小的满足对应性质的测试点编号。
对于每组数据:
- 第一行包含一个正整数 $n$,表示操作次数。
- 接下来 $n$ 行,每行包含 $5$ 个整数,表示一个操作,具体如下:
- `1 sx sy tx ty`:添加一条直线。
- `2 lx ly rx ry`:询问满足 $lx{\le}x{\le}rx$ 且 $ly{\le}y{\le}ry$ 的被点亮的点数。
输出格式
对于每个操作 $2$,在一行内输出一个数表示答案。
说明/提示
本题输入量较大,下发文件中提供一份快读模板。
对于所有的数据:
- $1 \le n \le 1\times 10^6$;
- $1 \le \sum n \le 2\times 10^6$;
- $-10^9 \le sx,sy,tx,ty \le 10^9$,$sx \not= tx$;
- $-10^9 \le lx \le rx \le 10^9$,$-10^9 \le ly \le ry \le 10^9$。
::cute-table{tuack}
| 测试点编号 | $n \leq$ | $ \sum n \leq$ | 特殊性质 |
| :--------: | :------------: | :------------: | :------: |
| $1$ | $100$ | $500$ | A |
| $2$ | $1\times 10^6$ | $2\times 10^6$ | B |
| $3$ | ^ | ^ | C |
| $4$ | ^ | ^ | D |
| $5$ | $1\times 10^5$ | $3\times 10^5$ | 无 |
| $6\sim 10$ | $1\times 10^6$ | $2\times 10^6$ | ^ |
- **特殊性质 A**:保证 $\lvert lx \rvert,\lvert rx \rvert,\lvert ly \rvert,\lvert ry \rvert \le 500$。
- **特殊性质 B**:保证 $lx=rx$。
- **特殊性质 C**:保证 $sx=0,sy=0$。
- **特殊性质 D**:保证 $ly=-1e9, ry=1e9$。