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;
    }
    
  • 相关阅读:
    jQuery对表单的操作
    js-工厂模式
    js中call、apply、bind的区别
    js实现重载和重写
    js封装/继承/多态
    变量的解构赋值
    var & let & const 的区别
    jQuery之animate中的queue
    jQuery之动画
    .trigger
  • 原文地址:https://www.cnblogs.com/shuitiangong/p/14176676.html
Copyright © 2011-2022 走看看