Robot Queries

从这道题目的官解,我们可以再次复习一下:转换对象

可以看一看这道题目的官解,也挺自然的(dictionary就是map)

然后说一下我的做法

很明显地发现,\([1,l-1]\)\([r+1,n]\)是不被影响的,而且\([l,r]\)翻转之后,起点和终点也是不变的(官解也利用了这个思想),所以对一个询问的点\((x,y)\),我们考虑其是否在\([1,l-1],[l,r],[r+1,n]\)这三段区间出现即可

我们先来考虑中间这一段,手搓几次就可以发现,这原来的序列经过了\((x_0,y_0)\),并且\([l,r]\)的起点终点分别是\((x_1,y_1),(x_2,y_2)\),那么翻转之后的序列一定会经过\((x_1+x_2-x_0,y_1+y_2-y_0)\)(就是作起点终点的中点的对称点,相当于翻转了一百八十度)

综上,对一个询问\((x,y)\),我们分别统计在\([1,l-1],[l,r],[r+1,n]\)是否分别出现对应的点即可

但是这个统计方法,我赛时的时候以序列为对象,用到了前缀和,非常复杂;然而如果像官解一样,以坐标为对象统计,就非常简单了

posted @ 2024-03-01 13:16  最爱丁珰  阅读(2)  评论(0编辑  收藏  举报