我QwQ了,啊,真不愧是“稻花香里说丰年,听取WA声一片”。
#include<bits/stdc++.h>
using namespace std;
int n,dp[3010][2],ans;
struct Line{
int l,r;
} line[3010];
bool cmp(Line a,Line b){
return a.r<b.r;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d%d",&line[i].l,&line[i].r);
sort(line+1,line+n+1,cmp);
memset(dp,127,sizeof(dp));
dp[1][0]=dp[1][1]=line[1].r-line[1].l;
for(int i=2;i<=n;i++){
int s=line[i].r-line[i].l;
for(int j=1;j<i;j++){
if(line[i].l<=line[j].r&&line[j].l<=line[i].r){
dp[i][0]=min(dp[i][0],dp[j][1]+s);
dp[i][1]=min(dp[i][1],dp[j][0]);
}else dp[i][0]=min(dp[i][0],min(dp[j][0],dp[j][1])+s);
}
}
for(int i=1;i<=n;i++) ans=max(ans,min(dp[i][0],dp[i][1]));
printf("%d",ans);
return 0;
}