• 题解

    题目本身没什么好说的。

    只是一道普及组的题让我领悟到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. Java练习之使用StringBuilder

    package string.demo; /* * 将数组变为字符串输出 */ public class StringBuilderTest { /** * @param args */ public ...

  2. elasticsearch安装ik分词器(非极速版)

    1.下载下载地址为: https://github.com/medcl/elasticsearch-analysis-ik 2.解压把下载的 elasticsearch-analysis-ik.zip ...

  3. 微服务架构及Eureka简介

    一.微服务架构 服务提供者.服务消费者.服务发现组件这三者之间的关系: 各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息. 服务消费者可从服务发现组件查询服务 ...

  4. jquery easyui:tab自动加载第一个tab内容

    $('#resourceTabs').tabs('unselect', 0);$('#resourceTabs').tabs('select', 0);

  5. .NetCore 下使用多个DbContext

    一个项目中使用多个DbContext 或者种数据库的多个DbContext 业务需要 单个DbContext使用不需要给出说明 1.dotnet ef migrations add migration ...

  6. JavaScript中变量的相互引用

    http://www.jb51.net/article/23387.htm  

  7. Java第三阶段学习(十二、HttpServletRequest与HttpServletResponse)

    一.HttpServletRequest 1.概述: 我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和 ...

  8. Spark官方文档中推荐的硬件配置

    1.关于存储: 1).可能的话,Spark节点与HDFS节点是一一对应的 2).如果做不到,那至少保证Spark节点与HDFS节点是一个局域网内 2.关于硬盘: 1).官方推荐每台机子4-8个硬盘,然 ...

  9. maven 不同环境打包命令

    mvn clean package mvn clean package -Pdev mvn clean package -Ptest mvn clean package -Pproduct

  10. SQL中的坑

    一.where,group by,having --group by 和having 解释:前提必须了解sql语言中一种特殊的函数:聚合函数, 例如SUM, COUNT, MAX, AVG等.这些函数 ...