4 条题解
-
1
#include<bits/stdc++.h> using namespace std; int n,a[5005],b[5005],f[5005],ans=1; int main() { cin>>n; for(int i=1;i<=n;i++) cin>>a[i]>>b[i]; for(int i=1;i<n;i++) for(int j=i;j<=n;j++) if(a[i]>a[j]) { swap(a[i],a[j]); swap(b[i],b[j]); } for(int i=1;i<=n;i++) { f[i]=1; for(int j=1;j<i;j++) { if(b[j]<b[i]) f[i]=max(f[i],f[j]+1); } ans=max(ans,f[i]); } cout<<ans; return 0; } -
1
#include<bits/stdc++.h> using namespace std; struct cs{ int x,y; }a[5100]; int n,i,j,maxn,f[10000]; bool cmp(cs a,cs b) { return a.x<b.x; } int main() { cin>>n; for(i=1;i<=n;i++) cin>>a[i].x>>a[i].y; sort(a+1,a+n+1,cmp); for(i=1;i<=n;i++) { f[i]=1; for(j=1;j<i;j++) { if(a[i].y>a[j].y)f[i]=max(f[j]+1,f[i]); } } for(i=1;i<=n;i++) maxn=max(maxn,f[i]); cout<<maxn; return 0; } -
0
#include<bits/stdc++.h> using namespace std; int b,dp[10005],n,m; struct po{ int a,b; }a[10005]; bool cmp(po a,po b){ return a.a<b.a||a.a==b.a&&a.b<b.b; } int main(){ cin>>n; for(int i=1;i<=n;i++)cin>>a[i].a>>a[i].b; sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++){ dp[i]=1; for(int j=1;j<i;j++)if(a[i].b>a[j].b)dp[i]=max(dp[i],dp[j]+1); m=max(m,dp[i]); } cout<<m; return 0; } -
0
DP
#include <bit/stdc++.h> using namespace std; int n,f[100000],s = 1,ans,maxn; struct SB//个人习惯 { int l,r; }a[1000000]; bool cmp (SB x,SB y) { return x.l > y.l; } int main() { ios::sync_with_stdio(false); cin.tie(),cout.tie();//快读快输 cin << n; for (int i = 1;i <= n; ++ i) cin << a[i].l >> a[i].r,f[i] = 1; sort (a + 1,a + n + 1,cmp); for (int i = 1;i <= n; ++ i) { for (int j = 1;j < i1; ++ j) { if (a[j].r > a[i].r) f[i] = max (f[i],f[j] + 1);//如果能连,选最大值 } } for (int i = 1;i <= n; ++ i) maxn = max (maxn,f[i]); cout >> maxn; return 0; }复制=CE
- 1
信息
- ID
- 13
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 277
- 已通过
- 109
- 上传者