• 题解

    题目本身没什么好说的。

    只是一道普及组的题让我领悟到scanf()读字符的真谛。scanf()函数最奇异的功能就是控制串里除格式化字符串之外的字符。若匹配成功则舍去

    所以我们能够“精心设计”这个控制串。在读单个字符时略去全部空格、回车等干扰字符。再也不用cin一个(c)string然后手工推断了。

  • 题目描写叙述

    某校的惯例是在每学期的期末考试之后发放奖学金。

    发放的奖学金共同拥有五种。获取的条件各自不同:

    1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),而且在本学期内发表1篇或1篇以上论文的学生均可获得;

    2) 五四奖学金,每人4000元。期末平均成绩高于85分(>85),而且班级评议成绩高于80分(>80)的学生均可获得;

    3) 成绩优秀奖。每人2000元,期末平均成绩高于90分(>90)的学生均可获得;

    4) 西部奖学金。每人1000元。期末平均成绩高于85分(>85)的西部省份学生均可获得;

    5) 班级贡献奖。每人850元,班级评议成绩高于80分(>80)的学生干部均可获得;

    仅仅要符合条件就能够得奖,每项奖学金的获奖人数没有限制,每名学生也能够同一时候获得多项奖学金。比如姚林的期末平均成绩是87分,班级评议成绩82分,同一时候他还是一位学生干部,那么他能够同一时候获得五四奖学金和班级贡献奖,奖金总数是4850元。

    如今给出若干学生的相关数据,请计算哪些同学获得的奖金总数最高(如果总有同学能满足获得奖学金的条件)。

  • 输入格式:

    输入文件scholar.in的第一行是一个整数N(1 <= N <= 100)。表示学生的总数。接下来的N行每行是一位学生的数据,从左向右依次是姓名,期末平均成绩,班级评议成绩。是否是学生干部,是否是西部省份学生。以及发表的论文数。姓名是由大写和小写英文字母组成的长度不超过20的字符串(不含空格);期末平均成绩和班级评议成绩都是0到100之间的整数(包含0和100);是否是学生干部和是否是西部省份学生分别用一个字符表示。Y表示是,N表示不是。发表的论文数是0到10的整数(包含0和10)。

    每两个相邻数据项之间用一个空格分隔。

  • 输出格式:

    输出文件scholar.out包含三行,第一行是获得最多奖金的学生的姓名,第二行是这名学生获得的奖金总数。如果有两位或两位以上的学生获得的奖金最多。输出他们之中在输入文件里出现最早的学生的姓名。

    第三行是这N个学生获得的奖学金的总数。

  • 输入输出例子

    输入例子#1:

    4

    YaoLin 87 82 Y N 0

    ChenRuiyi 88 78 N Y 1

    LiXin 92 88 N N 0

    ZhangQin 83 87 Y N 1

    输出例子#1:

    ChenRuiyi

    9000

    28700

  • Code

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n, sum;
struct node
{
bool cad, wst;
int num, ave, gra, pro, sch;
char nam[24];
node(bool cad = false, bool wst = false, int num = 0, int ave = 0, int gra = 0, int pro = 0, int sch = 0, char xnam[24] = "") :
cad(cad), wst(wst), num(num), ave(ave), gra(gra), pro(pro), sch(sch)
{
for(int i = 0; i <= strlen(xnam); ++i) nam[i] = xnam[i];
}
bool operator < (const node& b) const
{
if(sch > b.sch) return true;
if(sch < b.sch) return false;
return num < b.num;
}
}S[105];
int main()
{
char ch[24], cad, wst;
int ave, gra, pro, tmp;
bool fc, fw;
scanf("%d\n", &n);
for(int i = 0; i < n; ++i)
{
tmp = 0;
memset(ch, 0, sizeof(ch));
fc = fw = false;
scanf("%s %d %d %c %c %d\n", ch, &ave, &gra, &cad, &wst, &pro);
//壮哉我scanf大法
if(cad == 'Y') fc = true;
if(wst == 'Y') fw = true;
if(ave > 80 && pro > 0) tmp += 8000;
if(ave > 85 && gra > 80) tmp += 4000;
if(ave > 90) tmp += 2000;
if(fw && ave > 85) tmp += 1000;
if(fc && gra > 80) tmp += 850;
sum += tmp;
S[i] = node(fc, fw, i, ave, gra, pro, tmp, ch);
}
sort(S, S + n);
printf("%s\n%d\n%d\n", S[0].nam, S[0].sch, sum);
return 0;
}

Noip2005谁拿了最多的奖学金题解的更多相关文章

  1. NOIP200505谁拿了最多的奖学金

    NOIP200505谁拿了最多的奖学金 Description 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1)      院士奖学金,每人8000元,期 ...

  2. NOIP2005 谁拿了最多奖学金

    1谁拿了最多奖学金 (scholar.pas/c/cpp) [问题描述] 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1)     院士奖学金,每人800 ...

  3. 【b501】谁拿了最多的奖学金

    Time Limit: 1 second Memory Limit: 50 MB [问题描述] 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同:1) 院士奖学金 ...

  4. NOIP2007奖学金题解——洛谷1093

    题目描述 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金.期末,每个学生都有3门课的成绩:语文.数学.英语.先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高 ...

  5. P1903 奖学金题解

    众所周知,这是一道通过struct结构体进行排序的题目 思路:平常的输入.. 然后定义一个结构体grade,存放每个学生的学号.三科成绩.(也可以只存语文成绩和总分和学号) 自定义cmp函数,通过三层 ...

  6. NOIP2005题解

    传送门 考查题型 dp 模拟 贪心 T1 谁拿了最多的奖学金 题目描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末 ...

  7. bzoj2660: [Beijing wc2012]最多的方案

    题目链接 bzoj2660: [Beijing wc2012]最多的方案 题解 对于一个数的斐波那契数列分解,他的最少项分解是唯一的 我们在拆分成的相临两项之间分解后者,这样形成的方案是最优且不重的 ...

  8. 洛谷 P3695 CYaRon!语 题解 【模拟】【字符串】

    大模拟好啊! 万一远古计算机让我写个解释器还真是得爆零了呢. 题目背景 「千歌です」(我是千歌).「曜です」(我是曜).「ルビィです」(我是露比).「3人合わせて.We are CYaRon! よろし ...

  9. poj 1106(半圆围绕圆心旋转能够覆盖平面内最多的点)

    Transmitters Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4955   Accepted: 2624 Desc ...

随机推荐

  1. csfb

    SELECT CSDBTOGSMALLSuccessRate,CSFBTOGSMMODelay,CSFBTOGSMMODropRate,CSFBTOGSMMOFRStartCount,CSFBTOGS ...

  2. 【Linux高级驱动】input子系统框架【转】

    转自:http://www.cnblogs.com/lcw/p/3802617.html [1.input子系统框架(drivers\input)] 如何得出某个驱动所遵循的框架?    1) 通过网 ...

  3. 搜索引擎ElasticSearchV5.4.2系列二之ElasticSearchV5.4.2+kibanaV5.4.2+x-packV5.4.2安装

    相关博文: 搜索引擎ElasticSearchV5.4.2系列一之ES介绍 搜索引擎ElasticSearchV5.4.2系列二之ElasticSearchV5.4.2+klanaV5.4.2+x-p ...

  4. 浅谈js设计模式之发布 — 订阅模式

    发布 — 订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知.在 JavaScript开发中,我们一般用事件模型来替代传统的发布 — ...

  5. Little-endian和Big-endian

    谈到字节序的问题,必然牵涉到两大CPU派系.那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU.PowerPC系列采用big endian方式存储数据,而x86系列则采用l ...

  6. 洛谷P3398 仓鼠找sugar [LCA]

    题目传送门 仓鼠找sugar 题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而 ...

  7. Mybatis通过注解方式实现批量插入数据库

    原文地址:http://f0rb.iteye.com/blog/1207384 MyBatis中通过xml文件配置数据库批量操作的文章很多,比如这篇http://www.cnblogs.com/xcc ...

  8. JedisConnectionException: java.net.ConnectException: Connection refused

    出现问题 我遇到的一个问题,在连接redis的时候出现了错误!错误如下: JedisConnectionException: java.net.ConnectException: Connection ...

  9. 捕获程序异常之tryCatch

    一.try catch语法try…catch…finally…语法中除了try以外,catch和finally都是可选的(两者必须要有一个),也就是说try…catch…finally…语法有以下三种 ...

  10. IE9中ajax请求成功后返回值却是undefined

    ie9中ajax请求一般处理程序成功后返回值始终是undefined,在网上找过很多资料,大致意思都是说前后端编码不一致造成的,但是按照资料上的方案去修改却发现根本不能解决我的问题,试过好多种方案都不 ...