Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52443 | seanlsy | 木板游戏 | C++ | 解答错误 | 0 | 2000 MS | 292 KB | 833 | 2022-07-19 12:12:19 |
#include <bits/stdc++.h> using namespace std; int n,ans,l[2005],r[2005],num[2005],val[2005],cnt[2005]; bool cmp(int x,int y) { return r[x]-l[x]>r[y]-l[y]; } inline int read() { int x=0; bool f=1; char ch=getchar(); while(ch>'9'||ch<'0') { if(ch=='-')f=0; ch=getchar(); } while(ch<='9'&&ch>='0') { x=(x<<3)+(x<<1)+(ch^48); ch=getchar(); } return f?x:-x; } int main() { n=read(); for(int i=1; i<=n; i++) l[i]=read(),r[i]=read(),num[i]=1,val[i]=i; sort(val+1,val+n+1,cmp); for(int i=1; i<n; i++) for(int j=i+1; j<=n; j++) if(l[i]<=l[j]&&r[j]<=r[i]) if(l[i]==l[j]&&r[i]==r[j]) num[i]++,num[j]++; else cnt[j]=max(cnt[j],cnt[i]+num[i]); for(int i=1; i<=n; i++) ans=max(ans,cnt[i]+num[i ]); printf("%d\n",ans); return 0; }