游戏
Description
有一个
1~n
的排列
a
,玩家A和玩家B可以每次指定一个长度为
现在告诉你谁先手,假设A和B都十分聪明,请问最后是谁赢了
Hint
乍一看是一道数学题/博弈题,想了很久连暴力都不会打……
其实要认真分析
注意到数据特点:没有重复元素,所以对于任意一个数对,它们不是构成顺序对就是构成逆序对,而一次翻转就是把区间的顺序对和逆序对互换,我们同时想到,换到不能再换的时候就是序列顺序对为0的时候.
而长度为
4x+2
或
4x+3(x∈N)
的区间内数对的数量是
(4x+2)(4x+1)2=8x2+6x+1
和
(4x+3)(4x+2)2=8x2+6x+3
,它们都是奇数.
所以如果指定交换的区间中顺序对数量为奇数则逆序对数量为偶数,反之也成立.
所以翻转一个区间就会导致区间中顺序对数量的奇偶性翻转
而你要顺序对数量变成偶数0,所以你只要判断原序列顺序对数量奇偶性
Code
自行YY(逃~~~