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 |
Re:按l和w排序两次,取最小的sum,有问题吗?In Reply To:按l和w排序两次,取最小的sum,有问题吗? Posted by:savon_cn at 2006-10-17 14:43:30 > #include<vector> > #include<list> > #include<map> > #include<set> > #include<deque> > #include<stack> > #include<bitset> > #include<algorithm> > #include<functional> > #include<numeric> > #include<utility> > #include<sstream> > #include<iostream> > #include<iomanip> > #include<cstdio> > #include<cmath> > #include<cstdlib> > #include<string> > using namespace std; > typedef struct sticks { > int x; > int y; > }stick; > stick aa[5000]; > int compare_x( const void* a, const void* b ) { > stick* arg1 = (stick*) a; > stick* arg2 = (stick*) b; > if( arg1->x < arg2->x ) return -1; > else if( arg1->x == arg2->x ) > return arg1->y-arg2->y; > else return 1; > } > int compare_y( const void* a, const void* b ) { > stick* arg1 = (stick*) a; > stick* arg2 = (stick*) b; > if( arg1->y < arg2->y ) return -1; > else if( arg1->y == arg2->y ) > return arg1->x-arg2->x; > else return 1; > } > > int main() > { > int M; > int Tcase; > cin>>Tcase; > while(Tcase-->0) > { > cin>>M; > for(int i=0;i<M;i++) > cin>>aa[i].x>>aa[i].y; > qsort(aa,M,sizeof(stick),compare_x); > int sum1=0; > for(int i=0;i<M-1;i++) > { > if(aa[i].y>aa[i+1].y) > sum1++; > } > qsort(aa,M,sizeof(stick),compare_y); > int sum2=0; > for(int i=0;i<M-1;i++) > { > if(aa[i].x>aa[i+1].x) > sum2++; > } > > if(sum1>sum2) > cout<<sum2+1<<endl; > else > cout<<sum1+1<<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