题意简述
SY 非常聪明,也爱玩游戏。
这次他和 ZXY 玩游戏,游戏在一个序列上进行。SY 为先手,每次需要轮流在序列开头或结尾拿走一个数,若一个人拿走一个数后整个序列变得单调(单调不下降或单调不上升)的话,此人获胜,游戏结束。
SY 和 ZXY 的游戏进行 M 次,每次在一个长为 N 的序列
a
a
a 的
[
l
i
,
r
i
]
[l_i,r_i]
[li,ri] 区间进行,每次游戏独立。SY 和 ZXY 都是绝顶聪明的人,因此都会按照最优策略玩。若某次游戏 SY 赢了,他会发出属于 HandInDevil 的笑声,你需要输出 se
,如果他输了,他会哭得很伤心,因为输给了一个
M
e
i
E
r
M_{^{ei}}E_{^{r}}
MeiEr!此时你需要输出 liulei
。
3 ≤ N , M ≤ 1 0 6 , 0 ≤ a i ≤ 1 0 9 , 1 ≤ l i ≤ r i ≤ n 3 ≤ N, M ≤ 10^6, 0 ≤ a_i ≤ 10^9, 1 ≤ l_i ≤ r_i ≤ n 3≤N,M≤106,0≤ai≤109,1≤li≤ri≤n
推理题解
令我们总区间 [ 1 , N ] [1,N] [1,N] 为坐标 ( 0 , 0 ) (0, 0) (0,0)。每次删掉开头,我们认为是从 ( x , y ) (x, y) (x,y) 走到 ( x + 1 , y ) (x + 1, y) (x+1,y) ,删掉尾部是从 ( x , y ) (x, y) (x,y) 走到 ( x , y + 1 ) (x, y + 1) (x,y+1) 。
也就是我们在一个二维平面上,从 ( l i − 1 , N − r i ) (l_i-1,N-r_i) (li−1,N−ri) 开始每次向上向右走,直到走到不能走的位置 (满足单调了)。我们要求的就是这个位置是先手必胜还是先手必败。
接下来有两个推论:
- 如果 ( x + 1 , y + 1 ) (x + 1, y + 1) (x+1,y+1) 是先手必败,那么 ( x , y ) (x, y) (x,y) 一定是先手必败。
- 如果 ( x + 1 , y + 1 ) , ( x + 2 , y + 2 ) (x + 1, y + 1),(x + 2, y + 2) (x+1,y+1),(x+2,y+2) 都是先手必胜,那么 (x, y) 一定也是先手必胜。
我们定义 1 为先手必胜,0 为必败,那么某个位置 ( x , y ) (x,y) (x,y) (并非单调区间)的胜负状态 f x , y f_{x,y} fx,y 就有这样的式子成立: f x , y = ( f x + 1 , y a n d f x , y + 1 ) x o r 1 f_{x,y}=(f_{x+1,y}\; and\;f_{x,y+1})\; xor\;1 fx,y=(fx+1,yandfx,y+1)xor1,我们根据这个式子证明推论。
第一条推论很好证明,若 f x + 1 , y + 1 f_{x+1,y+1} fx+1,y+1 是 0,那么 f x + 1 , y f_{x+1,y} fx+1,y 和 f x , y + 1 f_{x,y+1} fx,y+1 一定都是 1,进而 f x , y = 0 f_{x,y}=0 fx,y=0 得证了。
第二条推论我们可以用反证法,若 f x , y = 0 f_{x,y}=0 fx,y=0 ,说明 f x + 1 , y = f x , y + 1 = 1 f_{x+1,y}=f_{x,y+1}=1 fx+1,y=fx,y+1=1,
- - - -
- - 1 -
1? 1 - -
0? 1? - -
而由于 f x + 1 , y + 1 f_{x+1,y+1} fx+1,y+1 等于 1,那么 f x + 1 , y = f x , y + 1 = 1 f_{x+1,y}=f_{x,y+1}=1 fx+1,y=fx,y+1=1 就只可能是根据 f x + 2 , y = f x , y + 2 = 0 f_{x+2,y}=f_{x,y+2}=0 fx+2,y=fx,y+2=0 推过来的,
- - - -
0? - 1 -
1? 1 - -
0? 1? 0? -
一个 0 意味着它上方和右方都是 1,那么 f x + 2 , y + 1 = f x + 1 , y + 2 = 1 f_{x+2,y+1}=f_{x+1,y+2}=1 fx+2,y+1=fx+1,y+2=1 ,但是这和 f x + 1 , y + 1 = 1 f_{x+1,y+1}=1 fx+1,y+1=1 矛盾,因为一个 1 意味着它上方和右方至少有一个 0 。
1? - - -
0? 1? 1 -
1? 1× 1? -
0? 1? 0? 1?
于是 f x , y = 0 f_{x,y}=0 fx,y=0 不成立, f x , y = 1 f_{x,y}=1 fx,y=1 得证。
那么我们要求一个位置的 f x , y f_{x,y} fx,y 值,应该怎么办呢?我们可以倒推回去。因为 f x + 1 , y + 1 f_{x+1,y+1} fx+1,y+1 和 f x + 2 , y + 2 f_{x+2,y+2} fx+2,y+2 可以决定 f x , y f_{x,y} fx,y ,所以我们考虑它的右上方最边上的两个 f f f 值,它们就是 f x , y f_{x,y} fx,y 的来源!
0 0 0 0 0 0 0 0 0 0 0 0
- - - - - - 1 - - - - 0
- - - - - ? - - - - - 0
- - - - ... - - - - - - 0
- - - ... - - - - - - - 0
- - ... - - - - - - - - 0
- ... - - - - - - - - - 0
? <-- - - - - - - - - - 0
我们知道,紧挨着“单调区间” f f f 线的值都是 1,然后就可以从右边推过来,计算右上方倒数第二个的值,
0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 0
1 0 1 0 1 0 1 0 1 0 1 0
- - - - ... - - - - - 1 0
- - - ... - - - - - - 1 0
- - ... - - - - - - - 1 0
- ... - - - - - - - - 1 0
? <-- - - - - - - - - 1 0
我们会发现,只跟到右边“墙壁”的距离奇偶性有关!
我们可以把每个点向右的最长单调区间求出来,然后加到这个坐标系中(两段“墙壁”),询问的时候二分找墙壁,然后求奇偶性就完了。
CODE(無)
因为无法评测,不知道结果,所以代码公布就不太好了😟