rt,1<=n<=2*10^4
RE代码:
#include<iostream>
#include<algorithm>
#define int long long
using namespace std;
const int MAXN = 2e4+114;
int n;
struct lin{
int a,b;
} ls[MAXN];
int t[MAXN*2];
int ct = 1;
int l[MAXN*4];
int ans = 0;
int cnt;
void lisan(){
sort(t+1,t+ct);
cnt = unique(t+1,t+ct)-t-1;
for(int i = 1;i<=n*2;i++){
ls[i].a = lower_bound(t+1,t+cnt+1,ls[i].a) -t;
ls[i].b = lower_bound(t+1,t+cnt+1,ls[i].b)-t;
}
}
signed main(){
cin>>n;
for(int i = 1;i<=n;i++){
cin>>ls[i].a>>ls[i].b;
t[ct++] = ls[i].a;
t[ct++] = ls[i].b;
}
lisan();
for(int i = 1;i<=n;i++){
l[ls[i].a]++;
l[ls[i].b]--;
}
// for(int i = 1;i<=20;i++){
// cout<<l[i]<<" ";
// }
// cout<<endl;
for(int i = 1;i<=cnt;i++){
l[i] += l[i-1];
if(l[i]!=0) ans += t[i+1]-t[i];
}
cout<<ans<<endl;
// for(int i = 1;i<=20;i++){
// cout<<l[i]<<" ";
// }
//t[ls[i].a] t[ls[i].b]
return 0;
}
AC代码:
#include<iostream>
#include<algorithm>
#define int long long
using namespace std;
const int MAXN = 2e4+114;
int n;
struct lin{
int a,b;
} ls[MAXN*2];
int t[MAXN*2];
int ct = 1;
int l[MAXN*4];
int ans = 0;
int cnt;
void lisan(){
sort(t+1,t+ct);
cnt = unique(t+1,t+ct)-t-1;
for(int i = 1;i<=n*2;i++){
ls[i].a = lower_bound(t+1,t+cnt+1,ls[i].a) -t;
ls[i].b = lower_bound(t+1,t+cnt+1,ls[i].b)-t;
}
}
signed main(){
cin>>n;
for(int i = 1;i<=n;i++){
cin>>ls[i].a>>ls[i].b;
t[ct++] = ls[i].a;
t[ct++] = ls[i].b;
}
lisan();
for(int i = 1;i<=n;i++){
l[ls[i].a]++;
l[ls[i].b]--;
}
// for(int i = 1;i<=20;i++){
// cout<<l[i]<<" ";
// }
// cout<<endl;
for(int i = 1;i<=cnt;i++){
l[i] += l[i-1];
if(l[i]!=0) ans += t[i+1]-t[i];
}
cout<<ans<<endl;
// for(int i = 1;i<=20;i++){
// cout<<l[i]<<" ";
// }
//t[ls[i].a] t[ls[i].b]
return 0;
}
其中ls的大小开大了一倍就不RE了