zoukankan      html  css  js  c++  java
  • NC20861 兔子的逆序对(数学基础)

    题目链接

    解题思路

      由于题目中的数都是互不相同的,所以每交换一对数字,序列的逆序数的奇偶性就会改变一次(可以证明序列的奇偶性变化只与交换的这对数的大小关系有关)。

    代码

    int arr[maxn], tmp[maxn], n, m; ll cnt;
    void merge(int l, int r) {
        if (l>=r) return;
        int mid = (l+r)>>1;
        merge(l, mid);
        merge(mid+1, r);
        int l1 = l, l2 = mid+1, tot = l;
        while(l1<=mid || l2<=r) {
            if (l2>r || (l1<=mid && arr[l1]<=arr[l2])) tmp[tot++] = arr[l1++];
            else {
                cnt += mid-l1+1;
                tmp[tot++] = arr[l2++];
            }
        }
        for (int i = l; i<=r; ++i) arr[i] = tmp[i];
    }
    int main() {
        cin >> n;
        for (int i = 1; i<=n; ++i) scanf("%d", &arr[i]);
        merge(1, n);
        int m; cin >> m;
        cnt = cnt&1;
        while(m--) {
            int l, r; scanf("%d%d", &l, &r);
            if (((r-l+1)/2)&1) cnt ^= 1;
            printf("%s
    ", cnt&1 ? "dislike":"like");
        }
        return 0;
    }
    
  • 相关阅读:
    JSTL&EL
    Response
    HTTP、Request
    Tomcat、Servlet
    单片机概念及应用
    JQuery高级
    Jquery基础
    JavaScript
    HTML、CSS
    跟着文档学习gulp1.2创建任务(task)
  • 原文地址:https://www.cnblogs.com/shuitiangong/p/14176676.html
Copyright © 2011-2022 走看看