1. 程式人生 > >好題收集(1) 遊戲(數學+思維)

好題收集(1) 遊戲(數學+思維)

n) 區間 同時 yep tid lsi des 一次 1.5

遊戲

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) 遊戲(數學+思維)