我用的是DP,这样做的第三个点爆了TLE(我知道双重循环会爆但不知怎么改),哪位大神帮我调一下,谢谢QAQ。
#include<bits/stdc++.h>
using namespace std;
long long b;
long long f[150000+10];
struct node{
long long t;
long long w;
long long g;
}a[150000+10];
bool cmp(node a,node b){
return a.w<b.w;
}
int main(){
scanf("%lld",&b);
for(long long i=1;i<=b;i++){
scanf("%lld%lld",&a[i].t,&a[i].w );
a[i].g=a[i].w-a[i].t+1;
}
sort(a+1,a+b+1,cmp);
f[1]=a[1].g;
for(long long i=1;i<=b;i++){
f[i]=a[i].g;
}
long long maxx=0;
for(long long i=2;i<=b;i++){
for(long long j=1;j<i;j++){
if(a[j].w <a[i].t ){
f[i]=max(f[i],a[i].g+f[j]);
maxx=max(f[i],maxx);
}
}
}
printf("%lld",maxx);
return 0;
}