与班尼特·胡迪一起拿奖学金(HZNU-2273)
与班尼特·胡迪一起拿奖学金 AC
Description
班尼特·胡迪这学期的体测终于上80分了,当期末考试的成绩单和综测表出来之后他想要计算自己究竟能不能拿到奖学金。班尼特·胡迪所在的计算机学院的奖学金评选方法为基本素质优秀,发展素质良好或优秀,体测成绩达到80分及以上,每班只有绩点前25%(向上取整)且符合以上条件的学生才有资格评选奖学金。
班尼特·胡迪由于沉浸在体测上80分的喜悦中无法自拔,他决定请你帮他写一个程序,根据所给班级的成绩单和综测表,综合计算出班尼特·胡迪所在班级哪些人有资格获得奖学金。
Input
输入在第一行给出1个整数N,表示班尼特·胡迪所在班级的人数(1<=N<=105)
接下来有两块输入。第一块包括了N个学生的成绩单,每个成绩占一行,格式为:姓名 体测成绩S体测 平均绩点SGPA。其中姓名为不超过20个可见字符的字符串;0<=S体测<=100 (整数),0.0<=SGPA<=5.0 。第二块包括了N个学生的综测表,每人的综测评价占一行,格式为:姓名 基本素质 发展素质。其中姓名为不超过20个可见字符的字符串,基本素质与发展素质都分为四个等级,如果是优秀则为2,良好则为1,及格为0,不及格为-1
Output
打印输出有资格获得奖学金的学生名单,每个学生占一行,格式为
姓名 基本素质 发展素质 S体测 SGPA
平均绩点 SGPA 保留小数点后两位,输出顺序为按照 SGPA 递减。若有并列,则按姓名字典序排序。题目保证姓名没有重复,且至少存在1个能够获得奖学金的学生。
Samples
Author
Source
题解:题目不难,就按要求所说,找到gpa排名前25%的(向上取整),同时体育成绩、基本素质和优秀素质要达标的人。
思路:这道题难点在于可能会超时。数据扫两个n进来,要把前面一段与后面一段对应,需要用二分法查找。我用了两遍sort,第一次是为了对应名字方便,第二次是按gpa和姓名字典序排序。题目要求是2s,最后我代码勉强349ms。。比较菜的代码。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
struct student //建立结构体把信息存入
{
char name[];
int jb;
int fz;
int sport;
double gpa;
}student1[],student2[];
bool compare1(const student a,const student b) //字典序排序
{
return strcmp(a.name,b.name)<;
} bool compare2(const student a,const student b) //gpa加字典序排序
{
if(a.gpa!=b.gpa) return a.gpa>b.gpa;
else return strcmp(a.name,b.name)<;
}
int main()
{
int n,i,m,l,r;
scanf("%d",&n);
for(int i=;i<n;i++)
{
scanf("%s %d %lf",student1[i].name,&student1[i].sport,&student1[i].gpa);
}
for(int i=;i<n;i++)
{
scanf("%s %d %d",student2[i].name,&student2[i].jb,&student2[i].fz);
}
sort(student2,student2+n,compare1); //将后面一段按字典序排序
/*for(int i=0;i<n;i++)
{
printf("%s %d %d\n",student2[i].name,student2[i].jb,student2[i].fz); //看一下排序结果
}
*/ for(i=;i<n;i++) //二分法查找两段相同的姓名,把第二段信息基本素质和优秀素质录入第一段
{
l=;
r=n-;
while(l<=r)
{
m=(l+r)/;
if(strcmp(student1[i].name,student2[m].name)==)
{
student1[i].jb=student2[m].jb;
student1[i].fz=student2[m].fz;
break;
}
else if(strcmp(student1[i].name,student2[m].name)>)
{
l=m+;
}
else
r=m-;
}
}
sort(student1,student1+n,compare2); //第一段数据排序
/*for(int i=0;i<n;i++) //检验排序结果
{
printf("%s %d %d %d %.2lf\n",student1[i].name,student1[i].jb,student1[i].fz,student1[i].sport,student1[i].gpa);
}
*/
for(i=;i<=(n*0.25+0.5);i++) //找到gpa前25%人并符合其它要求的人,题目要求向上取整
{
if(student1[i].sport>=&&student1[i].jb>=&&student1[i].fz>=)
printf("%s %d %d %d %.2lf\n",student1[i].name,student1[i].jb,student1[i].fz,student1[i].sport,student1[i].gpa);
}
return ;
}
与班尼特·胡迪一起拿奖学金(HZNU-2273)的更多相关文章
- 与班尼特·胡迪一起做生意 (HZUN-2261)
与班尼特·胡迪一起做生意 AC Time Limit: 1 s Memory Limit: 256 MB Description 马爷作为2-80X的资深土财主,靠着敏锐的商业嗅觉不断 ...
- 与班尼特·胡迪一起攻破浮空城 (HZNU-2264)
与班尼特·胡迪一起攻破浮空城 AC Time Limit: 1 s Memory Limit: 256 MB Description 桐人为了拯救被困在浮空城堡最顶层的亚丝娜,决定从第 ...
- 与班尼特·胡迪一起找简单规律(HZOJ-2262)
与班尼特·胡迪一起找简单规律 Time Limit: 1 s Memory Limit: 256 MB Description 班尼特·胡迪发现了一个简单规律 给定一个数列,1 , 1 ...
- HZNU 与班尼特·胡迪一起攻破浮空城 【DP】
题目链接 http://acm.hznu.edu.cn/OJ/problem.php?id=2264 思路 从终点往起点走 然后每次更新状态 因为要满足 最短路线 所以其实 只能是 往左走,往下走 或 ...
- 班尼特·A·麦克道尔 - 一个交易者的资金管理系统(2013年5月26日)
<一个交易者的资金管理系统:如何确保利润并避免破产风险> 作 者:班尼特·A·麦克道尔 系 列:“引领时代”金融投资系列-世界交易经典译丛 出 版:万卷出版公司 字 数:155千字 阅读完 ...
- 2000G电脑大型单机游戏合集
激活码 游戏名称(ctrl+F查找) 下载链接005875 艾迪芬奇的记忆 游戏下载链接http://pan.baidu.com/s/1t2PYRAj546_1AcOB-khJZg554158 暗影: ...
- 2013级软件工程GitHub账号信息
GitHub账号信息 序号 班级 学号 姓名 个人GitHub网址 1 信1301-1班 20122951 刘伟 https://github.com/weige8882 2 信1301-1班 201 ...
- 大数据之路week07--day06 (Sqoop 的使用)
Sqoop的使用一(将数据库中的表数据上传到HDFS) 首先我们先准备数据 1.没有主键的数据(下面介绍有主键和没有主键的使用区别) -- MySQL dump 10.13 Distrib 5.1.7 ...
- 【Unity原神AR开发实战 2022】下载原神模型,PMX转FBX,导入到Unity,AR设置,测试应用程序,生成应用程序
文章目录 一.前言 二.模型下载 1.官网下载 2.模之屋官方下载 3.第三方链接 三.pmx转fbx 1.Blender插件CATS的下载与安装 2.pmx模型的导入 四.Unity开发部分 1.V ...
随机推荐
- 【UNIX网络编程第三版】阅读笔记(一):代码环境搭建
粗略的阅读过<TCP/IP详解>和<计算机网络(第五版)>后,开始啃这本<UNIX网络编程卷一:套接字联网API>,目前linux下的编程不算太了解,在阅读的过程中 ...
- pig代码格式上小注意
1,%default file test.txt 中不要用引号,'' 和""都不行.'file'不会被识别 2,pig判断相等,用==,不是一个=.. 3,pig中只用单引号,不用 ...
- Guava 教程1-使用 Google Collections,Guava,static imports 编写漂亮代码
原文出处: oschina (API:http://ifeve.com/category/framework/guava-2/ JAR DOC Source 链接:http://pan.baidu.c ...
- cocos2d-x初探
今天把cocos2d-x下载下来装了准备试试. 就不用windows本了,主要想做iOS游戏,所以这里用mac. 先在http://cocos2d-x.org/download下载右边的cocos,然 ...
- #include <iostream>与#include <iostream.h>的区别
在新的C++标准中,生成新头文件的方法仅仅是将现有C++头文件名中的 .h 去掉.例如,<iostream.h> 变成了<iostream> ,<complex. ...
- Linux的文件系统及其硬盘分区挂载原理
如果您是一位新手,也许 您还不知道如何把文件从Windows拷贝到Linux上吧?下面,我们将说明Unix文件系统以及mount的工作过程,然后再比较详细地讨论. mount的使用和有关选项.如果您已 ...
- 视音频编解码学习工程:FLV封装格式分析器
===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...
- (四十九)Quartz2D自定义控件
利用Quartz2D来自定义UIImageView: 模仿UIImageView: 设置frame,设置图片. 注意一个细节,自定义的imageView,应该通过重写set方法来设置图片并且重绘,否则 ...
- 朴素贝叶斯分类法 Naive Bayes ---R
朴素贝叶斯算法 [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt 勿忘初心 无畏未来 作为一个初学者,水平有限,欢迎交流指正. 朴素贝叶斯分类法 ...
- Java 开源 CMS :magnolia
Magnolia 是一个开源基于Java的Web内容管理系统(CMS),构建在Java内容知识库标准(JSR-170).在使用它的过程中,我发现它的界面确实很有特色:给人一种Win8的感觉.在此记录一 ...