首页 > 其他 > 详细

好题收集(1) 游戏(数学+思维)

时间:2018-02-07 18:15:27      阅读:195      评论:0      收藏:0      [点我收藏+]

游戏

Description
有一个$1~n$的排列$a$,玩家A和玩家B可以每次指定一个长度为$4x+2$或$4x+3 (x∈N)$ 的区间将其翻转,且一定要保证翻转后序列的字典序变大,最后无法操作的那个人就输了.
现在告诉你谁先手,假设A和B都十分聪明,请问最后是谁赢了

Hint
乍一看是一道数学题/博弈题,想了很久连暴力都不会打……
其实要认真分析
注意到数据特点:没有重复元素,所以对于任意一个数对,它们不是构成顺序对就是构成逆序对,而一次翻转就是把区间的顺序对和逆序对互换,我们同时想到,换到不能再换的时候就是序列顺序对为0的时候.
而长度为$4x+2$或$4x+3 (x∈N)$ 的区间内数对的数量是$\frac {(4x+2)(4x+1)}{2}=8x^2+6x+1$和$\frac {(4x+3)(4x+2)}{2}=8x^2+6x+3$,它们都是奇数.
所以如果指定交换的区间中顺序对数量为奇数则逆序对数量为偶数,反之也成立.
所以翻转一个区间就会导致区间中顺序对数量的奇偶性翻转
而你要顺序对数量变成偶数0,所以你只要判断原序列顺序对数量奇偶性

Code
自行YY(逃~~~

?

好题收集(1) 游戏(数学+思维)

原文:https://www.cnblogs.com/LonelyRyan/p/8427577.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!