题解:P17722 [SCP-S 2026] 档案 / file
考虑把最终的贡献拆开。
首先对于第
考虑把第
干脆直接处理出
相当于让
求
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
typedef long long ll;
int n, m, a[N], b[N];
ll ans, val[N];
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> a[i];
ans += i;
}
sort(a + 1, a + 1 + n);
ans *= m;
for (int _ = 1, l; _ <= m; _++) {
cin >> l; int x, p;
for (int i = 1; i <= l; i++) {
cin >> x;
p = lower_bound(a + 1, a + 1 + n, x) - a;
val[_] += n - p + 1;
}
}
sort(val + 1, val + 1 + m);
for (int i = 1; i <= m; i++) {
ans += val[i] * (m - i + 1);
}
cout << ans << '\n';
return 0;
}
如有错误,请指出。