LG_B3951 [GESP样题 五级] 小杨的队列 题解

比较简单的一道逆序对的题,甚至不用 \(\Omicron(n \log n)\) 的归并,只需要 \(\Omicron(n^2)\) 的优化冒泡。

就是一个在队列里每次 push 一个元素,然后查找逆序对的问题。值得一提的是,这道题身高不重复,所以才能优化冒泡拿满分,不然的话就得老实用归并了。

直接看代码吧。

#include <bits/stdc++.h>
#define int long long
using namespace std;

int a[2005], f[2005], k = -1;
map <int, int> v;

signed main(){
    int n;
    cin >> n;
    
    for (int i = 0; i < n; i ++) cin >> a[i];
    int m;
    cin >> m;
    
    while (m --){
        int x, c = 0;
        cin >> x;
        
        f[++ k] = a[x];
        for (int i = 0; i <= k; i ++){
            for (int j = i + 1; j <= k; j ++){
                if (f[i] > f[j]) c ++;
            }
        }
        
        if (++ v[a[x]] > 1) k --;
        sort(f, f + k + 1);
        cout << c << endl;
    }
}

完结撒花。

posted @ 2024-04-06 08:56  lym12_ovo  阅读(104)  评论(0编辑  收藏  举报