1. 程式人生 > >bzoj 4975: [Lydsy1708月賽]區間翻轉【博弈論】

bzoj 4975: [Lydsy1708月賽]區間翻轉【博弈論】

必敗狀態是倒序排列,也就是正序對為0
然後發現,每次翻轉都是有奇數個數對(\( C_{4x+2}^{2} C_{4x+3}^{2} \) 都是奇數),所以每次翻轉丟回改變正反數對的奇偶性
又因為偶數為必敗狀態,所以順序對為奇數則必勝

#include<iostream>
#include<cstdio>
using namespace std;
int n,a[55],ans;
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
    {
        scanf("%d",&a[i]);
        for(int j=1;j<i;++j)
            if(a[j]<a[i])
                ans^=1;
    }   
    ans?puts("Q"):puts("T");
    return 0;
}