CF911D Inversion Counting

题目链接:http://codeforces.com/contest/911/problem/D

知识点:  暴力

解题思路:

  先暴力算出所有的逆序对数,得出原始的奇偶性。

  对于每一次倒置,不难发现:非逆序对和逆序对会互相转化,原来的非逆序对会变成逆序对,逆序对会变成非逆序对。所以,如果倒置的区间中有奇数个数对,那么逆序对数的奇偶性会变换,导致整体的奇偶性变换;否则整体奇偶性不变。

AC代码:

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 const int maxn = 1510;
 5 int a[maxn];
 6 int main(){
 7     int n;
 8     scanf("%d",&n);
 9     for(int i=1;i<=n;i++)   scanf("%d",&a[i]);
10     int have=0;
11     for(int i=1;i<=n;i++){
12         for(int j=i+1;j<=n;j++){
13             if(a[i]>a[j])   have++;
14         }
15     }
16     bool odd;
17     if(have%2==1)   odd=true;
18     else    odd=false;
19     int m,l,r;
20     scanf("%d",&m);
21     for(int i=0;i<m;i++){
22         scanf("%d%d",&l,&r);
23         int shu=r-l+1;
24         int dui=shu*(shu-1)/2;  //求出数对数
25         if(dui%2==1)    odd=!odd;
26         if(odd) printf("odd
");
27         else    printf("even
");
28     }
29     return 0;
30 }
“这些年我一直提醒自己一件事情,千万不要自己感动自己。大部分人看似的努力,不过是愚蠢导致的。什么熬夜看书到天亮,连续几天只睡几小时,多久没放假了,如果这些东西也值得夸耀,那么富士康流水线上任何一个人都比你努力多了。人难免天生有自怜的情绪,唯有时刻保持清醒,才能看清真正的价值在哪里。”
原文地址:https://www.cnblogs.com/Blogggggg/p/8447742.html