4 条题解
-
2
#define int long long using namespace std; const int N=1e5+66; int n,t,ed; int ans=0; struct node { int start,end; } a[N]; bool cmp(node a,node b) { if(a.end==b.end) return a.start<b.start; return a.end<b.end; } signed main() { cin>>n; for(int i=1; i<=n; i++) { cin>>a[i].start>>a[i].end; ed=max(ed,a[i].end); } int flag=0; stable_sort(a+1,a+n+1,cmp);//nmsl // for(int i=1;i<=n;i++) // cout<<a[i].start<<" "<<a[i].end<<endl; for(int i=1; i<=n; i++) { if(a[i].start>=flag) { ans++,flag=a[i].end; } //cout<<flag<<endl; } cout<<ans;
我一世英名毁在忘记调用排序上了,艹
-
1
动态规划求解
#include<bits/stdc++.h> using namespace std; int const N=1e5+10; struct node { int st,ed; }q[N]; int cmp(node x,node y) { if(x.st==y.st) return x.ed<y.ed; return x.st<y.st; } int dp[N]; int main() { int n; cin>>n; for(int i=1;i<=n;i++) { cin>>q[i].st>>q[i].ed; } sort(q+1,q+1+n,cmp); for(int i=1;i<=n;i++) { dp[i]=1; for(int j=i-1;j>=1;j--) { if(q[j].ed<=q[i].st) dp[i]=max(dp[i],dp[j]+1); } } int ans=0; for(int i=1;i<=n;i++) { ans=max(ans,dp[i]); } cout<<ans<<endl; return 0; }
-
0
#include <bits/stdc++.h> #define int long long using namespace std; const int N = 1e3+5; int n; struct Node { int l,r; bool operator <(const Node &oth)const { if(r-l==oth.r-oth.l) { if(l==oth.l) return r<oth.r; else return l<oth.l; } else return r-l<oth.r-l; } }; Node a[N]; signed main() { cin>>n; int s,t; for(int i=1;i<=n;i++) { cin>>s>>t; a[i].l=s,a[i].r=t; } sort(a+1,a+1+n); int ans=0; int now=0; for(int i=1;i<=n;i++) { s=a[i].l,t=a[i].r; if(s>=now) ans++,now=t; } cout<<ans; return 0; }
- 1
信息
- ID
- 955
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 208
- 已通过
- 25
- 上传者