比较简单的一道逆序对的题,甚至不用 \(\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;
}
}
完结撒花。
标签:B3951,队列,LG,int,题解,cin,long,++ From: https://www.cnblogs.com/mayile/p/18117148/lg_b_3951