是结构体排序的练习题,可供选手们巩固结构体排序的一些相关内容。

关于结构体排序

1.结构体定义

struct student
{
int num,a,b,c,sum;
}p[];

2.结构体初始化

for(int i=;i<=n;i++)
{
scanf("%d%d%d",&p[i].a,&p[i].b,&p[i].c);
p[i].num=i;
p[i].sum=p[i].a+p[i].b+p[i].c;
}

3.sort函数实现结构体排序

首先要知道sort函数在算法库里。 也就是

#include<algorithm>

具体使用方法如下,假如要给0-i的a数组按从小到大排序。

sort(a,a+i);

这里要注意,sort函数默认排序顺序是从小到大!! 但是有些同学(比如说我)喜欢空出0号位数组,从1开始读入,该咋排? 很简单:

sort(a+,a+i+);

4.cmp自定义函数

bool cmp(student a,student b)
{
/*code*/
}
bool cmp(student a,student b)
{
if(a.sum!=b.sum)
return a.sum>b.sum;
else if(a.a!=b.a)
return a.a>b.a;
else
return a.num<b.num;
}

好的,现在这道水题练习题就可以随随便便A掉了。 最后上AC代码:

#include<bits/stdc++.h>
using namespace std;
struct student
{
int num,a,b,c,sum;
}p[];
bool cmp(student a,student b)
{
if(a.sum!=b.sum)
return a.sum>b.sum;
else if(a.a!=b.a)
return a.a>b.a;
else
return a.num<b.num;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d%d%d",&p[i].a,&p[i].b,&p[i].c);
p[i].num=i;
p[i].sum=p[i].a+p[i].b+p[i].c;
}
sort(p+,p+n+,cmp);
for(int i=;i<=;i++)
printf("%d %d\n",p[i].num,p[i].sum);
return ;
}

NOIP2007 奖学金 结构体排序的更多相关文章

  1. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. 转载 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

    转载自:http://www.cnblogs.com/cj695/p/3863142.html sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在 ...

  3. 【转】 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

    sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...

  4. 网上关于sort结构体排序都不完整,我来写一个完整版的 2014-08-09 16:50 60人阅读 评论(0) 收藏

    主要参考sort函数_百度文库, 但是那篇有错误 2.结构体排序,a升,b降,c降 平板视图 打印? 01 #include <iostream> 02 #include <algo ...

  5. hdu1263 水果(结构体排序)

    Problem Description 夏天来了~~好开心啊,呵呵,好多好多水果~~ Joe经营着一个不大的水果店.他认为生存之道就是经营最受顾客欢迎的水果.现在他想要一份水果销售情况的明细表,这样J ...

  6. <algorithm>里的sort函数对结构体排序

    题目描述 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签到.签离记录,请根据记录找出当天开门和关门的人. 输入描述: 每天的记录在第一行给出记录的条目数M (M &g ...

  7. JustOj 2039: 成绩排名 (结构体排序)

    题目描述 每次期末考试成绩出来之前的一段时间大豪哥心里都是痛苦的,总感觉自己会在班上排名特别差.所以当成绩出来以后大豪哥想快点知道班上的总排名,以便知道自己的排名.(PS:大豪哥班上有个学霸名叫日天, ...

  8. (使用STL自带的排序功能进行排序7.3.2)POJ 2092 Grandpa is Famous(结构体排序)

    /* * POJ_2092.cpp * * Created on: 2013年11月1日 * Author: Administrator */ #include <iostream> #i ...

  9. HDU 1263 水果 结构体排序

    解题报告:一个结构体排序的题,用了一个运算符重载,要注意的是不同的地方可能会产相同的水果,一开始没注意. #include<cstdio> #include<cstring> ...

随机推荐

  1. Gson的序列化和反序列化-待更新

    反序列化为List List<Person> persons =gson.fromJson(json, new TypeToken<List<Person>>() ...

  2. C#开发BIMFACE系列26 服务端API之获取模型数据11:获取单个面积分区信息

    系列目录     [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列25 服务端API之获取模型数据9:获取楼层对应面积分区列表>一文中介绍了如何获取单个模型中单个楼层包 ...

  3. 解决root用户下都无权限操作的问题

    问题现象: 有时系统设置了一种文件,无法编辑其所有权​ sudo chown users:username {filename} 或者root用户下执行 chown users:username {f ...

  4. git查看/修改个人信息-用户名邮箱

    我们在使用git作为仓库管理工具时,要设置自己Git的用户名和邮箱,要不然大家一块开发时不知道谁是谁,不知道谁提交的. 另外,当我们用自己的电脑开发时你可能设置的是一个你喜欢的昵称,所以那就得改一下. ...

  5. python 动态语言和协议编程

    动态语言:不需要去定义变量的类型 协议编程:一个类实现了某个魔法函数,这个类就是什么类型,理解为协议

  6. element UI 调整表格行高

    使用element UI的table默认属性,绘制表格如下: 该表格的行高太大了,于是想调小一些. 查看官网的文档,table有几个属性, row-style:行的 style 的回调方法,也可以使用 ...

  7. RabbitMQ的消息持久化处理

    1.RabbitMQ的消息持久化处理,消息的可靠性是 RabbitMQ 的一大特色,那么 RabbitMQ 是如何保证消息可靠性的呢——消息持久化. 2.autoDelete属性的理解. 1).@Qu ...

  8. asp.net 使用NPOI读取excel文件

    asp.net 使用NPOI读取excel文件内容 NPOI下载地址:NPOI public class ExcelHelper { /// <summary> /// 读取Excel文件 ...

  9. springMVC校验器(validator)

    springmvc使用的是Hibernate Validator(和Hibernate的ORM无关)来完成校验功能 一.普通校验 1.导入jar包 2.编写校验错误配置文件 3.配置校验错误信息文件 ...

  10. layui常用的验证

    var LayVerifyExtend = { notnullNonnegativeInteger: function (value, item) { //value:表单的值.item:表单的DOM ...