0
已采纳
李奕歌
初级天翼
初级天翼
很简单啊
AC:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 510;
int n;
int b[maxn],c[maxn];
struct node{
int st,ed,num;
}a[maxn];
bool cmp(node x,node y){
if(x.st!=y.st) return x.st<y.st;
else return x.ed<y.ed;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&a[i].st,&a[i].ed);
a[i].num=a[i].ed-a[i].st+1;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++) b[i]=a[i].num,c[i]=1;
int max1=-1,max2=-1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<i;j++)
{
if(a[j].ed==a[i].st&&b[j]+a[i].num-1>=b[i])
{
b[i]=b[j]+a[i].num-1;
c[i]=c[j]+1;
}
}
max1=max(max1,b[i]);
}
for(int i=1;i<=n;i++){
if(max1==b[i]) max2=max(max2,c[i]);
}
for(int i=1;i<=n;i++){
if(b[i]==max1&&max2==c[i])
{
cout << b[i] << " " << c[i];
break;
}
}
return 0;
}
望采纳,谢谢