洛谷P1496
初见杀,如何将离散化后的数组标记染色才是最重要的
点击查看代码
#include<bits/stdc++.h>
using namespace std;
vector<int> f(4e4 + 10);
vector<int>d;
vector<int>c;
map<int, int>mp;
int main() {
int n; cin >> n;
vector<int>a(n);
vector<int>b(n);
long long ans = 0;
for(int i = 0; i < n; i++) {
cin >> a[i] >> b[i];
d.push_back(a[i]);
d.push_back(b[i]);
}
sort(d.begin(), d.end());
for(int i = 0; i < d.size(); i++) {
if(d[i] != d[i - 1] || i == 1) {
c.push_back(d[i]);
mp[d[i]] = c.size() - 1;
}
}
for(int i = 0; i < d.size(); i++) {
int x = mp[a[i]], y = mp[b[i]];
for(int j = x; j < y; j++) f[j] = 1;
}
for(int i = 0; i < c.size(); i++) {
if(f[i]) ans += c[i + 1] - c[i];
}
cout << ans << '\n';
return 0;
}

浙公网安备 33010602011771号