与班尼特·胡迪一起拿奖学金(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 ...
随机推荐
- JSTL之forEach的使用详解(简单的技术说得很详细)
在使用JSTL的核心标签库forEach之前,首先需要在JSP中通过taglib指令引入核心标签库: <%@ taglib uri="http://java.sun.com/jsp/j ...
- 基于HTTP头部的注入
基于HTTP头部的注入 常见的sql注入一般都是通过表单或请求参数进行注入,但这里给出的例子是通过HTTP协议头部进行注入. 例如一个的请求如下: GET / HTTP/1.1 Host: www.e ...
- pig运行方法:本地与云上
pig脚本 放在本地当前目录(键入pig命令时,所处的目录),然后用进入grunt,用run或者exec调用 1云运行: 键入pig进入grunt,用run命令运行当前目录脚本.(或者外部用pig - ...
- Linux多线程实践(5) --Posix信号量与互斥量解决生产者消费者问题
Posix信号量 Posix 信号量 有名信号量 无名信号量 sem_open sem_init sem_close sem_destroy sem_unlink sem_wait sem_post ...
- Java中回调函数编写
package XXX.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStr ...
- 十大常见Java String问题
翻译人员: 铁锚 翻译时间: 2013年11月7日 原文链接: Top 10 questions of Java Strings 本文介绍Java中关于String最常见的10个问题: 1. 字符串比 ...
- (三十九)数据的持久化存储-plist实现(XML属性表)
iOS应用数据存储的常用方式: 归档:用某种格式保存数据. XML属性列表(plist)归档(持久化) Preference 偏好设置 NSKeyedArchiver归档 SQLite3 数据库 效率 ...
- 【Qt编程】Qt学习笔记<一>
1. 在创建项目时,项目名和路径中都不能出现中文. 2. 可以使用Ctrl + "+"和Ctrl + "-"来改变程序的字体大小(Ctrl+ ...
- 集团公司(嵌入ETL工具)财务报表系统解决方案
集团公司(嵌入ETL工具)财务报表系统解决方案 一.项目背景: 某集团公司是一家拥有100多家子公司的大型集团公司,旗下子公司涉及各行各业,包括:金矿.铜矿.房产.化纤等.由于子公司在业务上的差异,子 ...
- linux下挂载U盘
转:http://www.cnblogs.com/yeahgis/archive/2012/04/05/2432779.html linux下挂载U盘 一.Linux挂载U盘: 1.插入u盘到计算机, ...