从这道题目的官解,我们可以再次复习一下:转换对象
可以看一看这道题目的官解,也挺自然的(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]\)是否分别出现对应的点即可
但是这个统计方法,我赛时的时候以序列为对象,用到了前缀和,非常复杂;然而如果像官解一样,以坐标为对象统计,就非常简单了
标签:终点,官解,Robot,Queries,序列,翻转 From: https://www.cnblogs.com/dingxingdi/p/18046770