0
点赞
收藏
分享

微信扫一扫

Luogu P5149 会议座位


题目链接:​​传送门​​

这只是个逆序对
加了个字符串处理
随便求

/**
* @Date: 2019-03-16T07:43:54+08:00
* @Last modified time: 2019-03-16T07:43:57+08:00
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <complex>
#include <algorithm>
#include <climits>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <iomanip>
#define
#define

using namespace std;
typedef long long ll;
int b[A], n, t[A], ans;
string s;
map<string, int> mm;
int lowbit(int x) {
return x & -x;
}
void add(int x, int val) {
while (x <= n) {
t[x] += val;
x += lowbit(x);
}
}
int ask(int x, int sum = 0) {
while (x > 0) {
sum += t[x];
x -= lowbit(x);
}
return sum;
}

int main(int argc, char const *argv[]) {
cin >> n;
for (int i = 1; i <= n; i++) cin >> s, mm[s] = i;
for (int i = 1; i <= n; i++) cin >> s, b[i] = mm[s];
for (int i = 1; i <= n; i++) {
add(b[i], 1);
ans += i - ask(b[i]);
}
cout << ans << endl;
}


举报

相关推荐

0 条评论