This commit is contained in:
Zengtudor 2025-07-17 16:51:32 +08:00
parent 16fb1df69b
commit a0e5239fce
2 changed files with 98 additions and 66 deletions

View File

@ -1,76 +1,32 @@
#include <cstdint> #include <cstdint>
#include <iostream> #include <iostream>
#include <set>
#include <utility>
#include <vector> #include <vector>
#include <algorithm>
using namespace std;
using ll = int64_t; using ll = int64_t;
const ll MAX_N = 100000;
struct Sm {
vector<ll> tree; ll k;
ll n; std::vector<std::pair<ll, ll>> v;
Sm(ll size) {
n = size; std::set<ll> s;
tree.assign(n + 1, 0);
} enum struct nt{
void update(ll i, ll v) { p,
while (i <= n) { l
tree[i] += v;
i += i & -i;
}
}
ll query(ll i) {
ll sum = 0;
while (i) {
sum += tree[i];
i -= i & -i;
}
return sum;
}
ll query(ll l, ll r) {
if (l > r) return 0;
return query(r) - query(l - 1);
}
}; };
int main() { int main(){
ios::sync_with_stdio(false); std::cin>>k;
cin.tie(0); for(ll i=1;i<=k;i++){
ll k; std::cin>>v[i].first>>v[i].second;
cin >> k; s.insert(v[i].first);
vector<ll> arr(MAX_N + 1); s.insert(v[i].second);
for (ll i = 1; i <= MAX_N; i++) {
arr[i] = i;
} }
for (ll i = 0; i < k; i++) { auto it = s.begin();
ll x, y; ll ln=1;
cin >> x >> y; while(it!=s.end()){
if (x <= MAX_N && y <= MAX_N) {
swap(arr[x], arr[y]);
}
} }
Sm sm(MAX_N);
long long ans = 0;
for (ll j = 1; j <= MAX_N; j++) {
if (arr[j] < MAX_N) {
ans += sm.query(arr[j] + 1, MAX_N);
}
sm.update(arr[j], 1);
}
cout << ans << endl;
return 0;
} }
/*
arrarr[i] = ii天的温度是i
1100,000
使Fenw
arr[j]arr[j]j之前
arr[j]便
*/

76
src/7/17/T634198ds.cpp Normal file
View File

@ -0,0 +1,76 @@
#include <cstdint>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
using ll = int64_t;
const ll MAX_N = 100000;
struct Sm {
vector<ll> tree;
ll n;
Sm(ll size) {
n = size;
tree.assign(n + 1, 0);
}
void update(ll i, ll v) {
while (i <= n) {
tree[i] += v;
i += i & -i;
}
}
ll query(ll i) {
ll sum = 0;
while (i) {
sum += tree[i];
i -= i & -i;
}
return sum;
}
ll query(ll l, ll r) {
if (l > r) return 0;
return query(r) - query(l - 1);
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
ll k;
cin >> k;
vector<ll> arr(MAX_N + 1);
for (ll i = 1; i <= MAX_N; i++) {
arr[i] = i;
}
for (ll i = 0; i < k; i++) {
ll x, y;
cin >> x >> y;
if (x <= MAX_N && y <= MAX_N) {
swap(arr[x], arr[y]);
}
}
Sm sm(MAX_N);
long long ans = 0;
for (ll j = 1; j <= MAX_N; j++) {
if (arr[j] < MAX_N) {
ans += sm.query(arr[j] + 1, MAX_N);
}
sm.update(arr[j], 1);
}
cout << ans << endl;
return 0;
}
/*
arrarr[i] = ii天的温度是i
1100,000
使Fenw
arr[j]arr[j]j之前
arr[j]便
*/