码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-02-07 19:31:53      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:gpo   soa   log   border   rtl   暴力   元素   告诉   ihs   

游戏

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) 游戏(数学+思维)

标签:gpo   soa   log   border   rtl   暴力   元素   告诉   ihs   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!