• 题解

    题目本身没什么好说的。

    只是一道普及组的题让我领悟到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. PowerDesigner显示Common注释列并自动赋值

    PowerDesigner中默认不显示Common注释列,可根据以下步骤显示并紫东填充Name列内容. 1.显示Common注释列 2.运行VB Script脚本自动赋值 使用Shift+Ctrl+X ...

  2. Install Shield中调用devcon自动安装硬件驱动程序

    1.安装驱动程序命令devcon安装好WINDDK之后,devcon.exe在"C:\WINDDK\3790.1830\tools\devcon"目录下.>devcon up ...

  3. casper Dom的操作

    phantom.casperTest = true; phantom.outputEncoding="utf-8"; var casper = require('casper'). ...

  4. 拓展中国剩余定理(exCRT)摘要

    清除一个误区 虽然中国剩余定理和拓展中国剩余定理只差两个字,但他俩的解法相差十万八千里,所以会不会CRT无所谓 用途 求类似$$\begin{cases}x \equiv b_{1}\pmod{a_{ ...

  5. 【linux】环境变量

    参考链接: http://www.cnblogs.com/growup/archive/2011/07/02/2096142.html https://zhidao.baidu.com/questio ...

  6. java字节流复制文件

    import java.io.FileInputStream; import java.io.FileOutputStream; import org.junit.Test; public class ...

  7. fhq treap 学习笔记

    序 今天心血来潮,来学习一下fhq treap(其实原因是本校有个OIer名叫fh,当然不是我) 简介 fhq treap 学名好像是"非旋转式treap及可持久化"...听上去怪 ...

  8. AndroidManifest.xml中android:configChanges的简介

    程序在运行时,一些设备的配置可能会改变,如:横竖屏的切换.键盘的可用性等,这样的事情一发生,Activity会重新启动,其中的过程是:在销毁之前会先 called onSaveInstanceStat ...

  9. 【LOJ】#2115. 「HNOI2015」落忆枫音

    题解 如果不加这条边,那么答案是所有点入度的乘积 加上了这条边之后,我们转而统计不合法的方案数 就是相当于统计一条路径从y到x,新图所有点度的乘积除上这条路径所有点的点度乘积 初始化为\(f[y] = ...

  10. 使用python爬取整本《盗墓笔记》

    一.前言 <盗墓笔记>是一本经典的盗墓题材小说,故事情节引人入胜.本文将使用python2.7通过小说网站http://www.daomubiji.com/来爬取整本盗墓笔记并保存,在这一 ...