hdu1031 Design T-Shirt 解题报告 sort的使用
2011-07-23 15:13
281 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1031
考察sort的用法 将 k排 每排m个数 上下加和 得到一排 m个数 然后按照得分从大到小的顺序排序 得分相同 将原来编号小的放在前面 取得前k个再次按照编号由小到大进行排序
输出排序后的结果 使用结构体保存排序之前的编号 在自己定义只对于数据的排序函数用于sort
最开始没理解题意 以为就是取第一次排好序的前几个没进行第二次排序 并且对于得分相同没做处理直接忽略 测试数据一值不过
代码如下:
考察sort的用法 将 k排 每排m个数 上下加和 得到一排 m个数 然后按照得分从大到小的顺序排序 得分相同 将原来编号小的放在前面 取得前k个再次按照编号由小到大进行排序
输出排序后的结果 使用结构体保存排序之前的编号 在自己定义只对于数据的排序函数用于sort
最开始没理解题意 以为就是取第一次排好序的前几个没进行第二次排序 并且对于得分相同没做处理直接忽略 测试数据一值不过
代码如下:
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; struct case1 //用num保存排序之前的编号 { int num; float data; }; case1 a[1000]; int cmp(const case1 &a,const case1 &b) //定义cmp函数用于sort的参数 { if(a.data==b.data) return a.num<b.num; return a.data>b.data; } int cmp2(const case1 &a,const case1 &b) { return a.num>b.num; } void init(case1 a[],int n) { int i; memset(a,0,sizeof(a)); for(i=0;i<n;i++) { a[i].num=i+1; } } int main() { // freopen("test.txt","r",stdin); // freopen("print.txt","w",stdout); int n,m,k,i,j,k1; float temp; while(scanf("%d %d %d",&n,&m,&k)!=EOF) { memset(a,0,sizeof(a)); init(a,1000); for(i=0;i<n;i++) { for(j=0;j<m;j++) { scanf("%f",&temp); a[j].data+=temp; } } sort(a,a+m,cmp); sort(a,a+k,cmp2); for(i=0;i<k;i++) { if(i==0) printf("%d",a[i].num); else printf(" %d",a[i].num); } printf("\n"); } //system("pause"); return 0; }
相关文章推荐
- HDU:1031 Design T-Shirt
- hdu 1425 sort 解题报告
- HDU 1031 Design T-Shirt(结构体2级排序)
- 杭电 HDU 1031 Design T-Shirt
- 母函数简介及简单使用(附HDU 1284 钱币兑换问题 解题报告)
- HDU 1031 Design T-Shirt
- hdu 1031 Design T-Shirt
- hdu 1031 Design T-Shirt
- HDU 1031 Design T-Shirt【排序】
- 母函数简介及简单使用(附HDU 1284 钱币兑换问题 解题报告)
- HDU 1031 Design T-Shirt
- HDU 1031 Design T-Shirt
- hdu 1031 Design T-Shirt
- HDU 1031 Design T-Shirt
- HDU 1031 Design T-Shirt
- hdu 1031 Design T-Shirt
- HDU 1031 Design T-Shirt
- HDU-1031- Design T-Shirt(c++ && 简单模拟)
- HDU 1031 Design T-Shirt
- HDU1031 Design T-Shirt(java)