2 条题解

  • 1
    @ 2026-9-19 16:18:44
    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct grass{
    	int x,y;
    }g[150001];
    int n,f[150001];
    bool cmp(grass a,grass b){
    	return a.y<b.y;
    }
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++) cin>>g[i].x>>g[i].y;
    	sort(g+1,g+n+1,cmp);
    	for(int i=1;i<=n;i++){
    		f[i]=g[i].y-g[i].x+1;
    		for(int j=1;j<i;j++){
    			if(g[j].y<g[i].x) f[i]=max(f[i],f[j]+(g[i].y-g[i].x+1));
    			else f[i]=max(f[i],f[j]);
    		}
    	}
    	cout<<f[n];
    }
    
    
    

    信息

    ID
    1410
    时间
    1000ms
    内存
    128MiB
    难度
    8
    标签
    递交数
    122
    已通过
    23
    上传者