做法简述:扫描线预处理,倍增回答询问。
脑子:好的我会了。
手:不你不会(并敲出了近 7k 的 WA 0pts 代码)。
用扫描线预处理出每个箭头和每个人接下来到哪个箭头。
注意仅仅保证箭头不相交,但是可以相对撞上,并且人可以一开始就在箭头上(这是若干次 WA 0pts 换来的经验
然后处理出 fi,j,gi,j,hi,j 分别表示从第 i 个箭头切换 2j 个箭头到哪个箭头,一共走了多少单位距离(不算第一步,因为其实并不能确定从哪里出发),走到了哪个位置。
查询的时候 xjb 倍增一下就行了(
代码:
1 |
|