HDU 4070 定义结构体使用sort进行排序
今天参加ACM集训,选的题目里就有杭电上的4070这道题目。排序的时候我用的冒泡排序。定义了一个行数为n(100010),列数为2的二维数组。把数组按照每一行的第二个数从大到小排序(第一个数跟着交换顺序)。最后提交是超时的。后来,想到了快速排序。但是不太熟悉快速排序。看了别人的代码以后。定义了一个结构体,然后用sort()函数排序。提交后,判断为正确。
下面是此题的代码:
1 #include<cstdio> 2 #include<iostream> 3 #include<cstdlib> 4 #include<algorithm> 5 using namespace std; 6 const int maxn = 100010; 7 struct node 8 { 9 int num,ti; 10 }cell[maxn]; 11 int cmp(const node &a,const node &b ) 12 { 13 return a.ti > b.ti; 14 } 15 int main() 16 { 17 int t,k,i,j,s,m,sum,n; 18 cin>>t; 19 for(k=1;k<=t;k++){ 20 cin>>n; 21 for(i=0;i<n;i++){ 22 cin>>cell[i].num>>cell[i].ti; 23 } 24 sort(cell,cell+n,cmp); 25 s=0;m=0;sum=0; 26 for(i=0;i<n;i++){ 27 s=cell[i].ti+cell[i].num+m; 28 if(s>sum) sum=s; 29 m+=cell[i].num; 30 } 31 printf("Case %d: %d\n",k,sum); 32 } 33 return 0; 34 }

浙公网安备 33010602011771号