CF575I Robots protection
题目描述
“Robots industries”公司生产用于区域防护的机器人。每个机器人能够保护一个直角等腰三角形区域,这些三角形的两条直角边分别平行于南北和东西方向。
某块土地的拥有者购买并在他的领地上放置机器人以进行防护。不时地,商人们希望在该土地上建设办公楼,他们想知道有多少机器人正在保护某个点。你需要处理这些查询。
输入格式
第一行包含两个整数 $N$(表示土地的宽度和高度)和 $Q$(表示要处理的查询次数)。
接下来的 $Q$ 行是需要处理的查询。
查询分为两类:
1. $1\ dir\ x\ y\ len$ —— 添加一个机器人来保护一个三角形区域。根据 $dir$ 的值,$x$、$y$、$len$ 表示不同的三角形:
- $dir=1$:三角形由点 $(x, y)$、$(x+len, y)$、$(x, y+len)$ 定义。
- $dir=2$:三角形由点 $(x, y)$、$(x+len, y)$、$(x, y-len)$ 定义。
- $dir=3$:三角形由点 $(x, y)$、$(x-len, y)$、$(x, y+len)$ 定义。
- $dir=4$:三角形由点 $(x, y)$、$(x-len, y)$、$(x, y-len)$ 定义。
2. $2\ x\ y$ —— 输出有多少机器人能够守护此点(当且仅当该点处在某个三角形内部或边界上时,机器人才能保护它)。
- $1 \leq N \leq 5000$
- $1 \leq Q \leq 10^{5}$
- $1 \leq dir \leq 4$
- 所有三角形的顶点坐标都在区间 $[1, N]$ 内
- 所有数字都是正整数。
输出格式
对于每一个类型为 2 的查询,输出该点有多少机器人保护。每个答案占一行。
说明/提示
由 ChatGPT 5 翻译