• 题解

    题目本身没什么好说的。

    只是一道普及组的题让我领悟到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. RabbitMQ Headers Exchange示例

    (1).发布者 var connectionFactory = new ConnectionFactory() { HostName="192.168.205.128",UserN ...

  2. linux系统时间不同步解决办法(同步本地时间)

    改变/etc/目录下的localtime文件,既可以改变当前的时区 1.方法是到/usr/share/zoneinfo目录下找到你要相对应的时区文件,例如上海在/usr/share/zoneinfo/ ...

  3. CRT/LCD/VGA Information and Timing【转】

    转自:http://www.cnblogs.com/shangdawei/p/4760933.html 彩色阴极射线管的剖面图: 1. 电子QIANG Three Electron guns (for ...

  4. 打包部署到tomcat

    部署到tomcat的方法 注意:在eclipse 或 idea 上需要引入外部tomcat 1.将程序打成war包启动tomcat 2.将target 文件下内容压缩城zip,发布到tomcat RO ...

  5. 【转】深入理解C++中public、protected及private用法

    首先明白以下两点: 1.类的一个特征就是封装,public和private作用就是实现这一目的. 即:用户代码(类外)可以访问public成员而不能访问private成员:private成员只能由类成 ...

  6. yum安装软件报错:curl#6 - "Could not resolve host: mirrorlist.centos.org; Temporary failure in name resolut

    # yum install -y epel-release Loaded plugins: fastestmirror Repository base is listed more than once ...

  7. Ocelot + IdentityServer4 构建 GateWay

    上一篇已经构建好了例子,接下来将IdentityServer4添加到Ocelot中去实现 配置一个客户端配置,可以构建一个简单的客户端信息,这里我用的混合模式,配置比较多,对于客户端模式而言实际很多都 ...

  8. [转] offsetParent 到底是哪一个?

    正文 不同情况 没有已定位的父节点,且自身position:relative的DIV元素的offsetParent为BODY 没有已定位的父节点,且自身position: absolute的DIV元素 ...

  9. CSS3中border-image属性详解

    border-images可以说也是CSS3中的重量级属性,如同圆角.边框颜色属性border-color.块阴影属性一样,也是属于边框属性中的一员. 从其字面意思上看,我们可以理解为“边框-图片”, ...

  10. ModelDriven 和 Preparable 拦截器

    Params 拦截器 Parameters 拦截器将把表单字段映射到 ValueStack 栈的栈顶对象的各个属性中. 如果某个字段在模型里没有匹配的属性, Param 拦截器将尝试 ValueSta ...