未验证的代码:
//思想类似于:最长递增子序列。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct Node {
int L;
int R;
} a[1009];
bool cmp(struct Node aa,struct Node bb) {
return aa.L<bb.L;
}
int dp[1009];
int main(){
int T,n;
scanf("%d",&T);
while(T--) {
scanf("%d",&n);
int cnt;
for(int i=1; i<=n; i++) {
scanf("%d %d",&a[i].L,&a[i].R);
}
sort(a+1,a+n+1,cmp);
int ans=0;
memset(dp,0,sizeof(dp));
for(int i=1; i<=n; i++) {
cnt=1;
for(int j=i-1;j>=1;j--){
if(a[j].R>=a[i].L){
cnt++;
if(cnt<3) ncount=0;//少于三个的时候,不切水果
else ncount=cnt;
dp[i]=max(dp[i],dp[j-1]+ncounaaat);
if(ans<dp[i]) ans=dp[i];
}
}
}
printf("%d\n",ans);
}
return 0;
}
//http://blog.csdn.net/wukonwukon/article/details/6725225