1. 程式人生 > >bzoj4975: [Lydsy1708月賽]區間翻轉

bzoj4975: [Lydsy1708月賽]區間翻轉

題目

Solution

題解

①每次翻轉區間,區間中的逆序對數和順序對數會互換
②因為翻轉區間長度只能是4x+3, 4x+2,所以區間中的順序對數+逆序對數一定為奇數
③最終必輸態是當前序列順序對數為0
由上可得:如果一開始順序對數為偶數,那麼先手必敗,否則先手必勝(因為每次操作會改變順序對的奇偶性,而最後順序對為偶數(0))

Code

#include<bits/stdc++.h>
using namespace std;
int n,i,j,a[51],cnt;
int main(){
    scanf("%d",&n);
    for
(i=0;i<n;i++) for (scanf("%d",&a[i]),j=0;j<i;j++) cnt^=(a[j]<a[i]); putchar(cnt?'Q':'T'); }