Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
这道题还听有人说是dp,原来一道超级水题。做题之前听说是dp,怀着dp的心情去解,后来越来越发现不对劲,值感觉这道题没学算法也能AC掉,就是一个简单的排序在加选取策略就a了,复杂度也就O(n). 贴代码: #include<iostream> #include<algorithm> using namespace std; struct lct{ int x,y; }a[50001]; struct pt_cmp { bool operator()(const lct &a,const lct &b)const { if ( a.x == b.x ) return a.y < b.y; return a.x < b.x; } }; int main() { int n; while(cin>>n&&n) { for(int i=1;i<=n;i++) cin>>a[i].x>>a[i].y; sort(a+1,a+n+1,pt_cmp()); int l=a[n].x,c=a[n].y; int ans=1; for(int j=n-1;j>=1;j--) { if(a[j].x==l) continue; else if(a[j].y>c) { c=a[j].y; l=a[j].x; ans++; } } cout<<ans<<endl; } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator