与班尼特·胡迪一起拿奖学金(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 ...
随机推荐
- 【翻译】Ext JS最新技巧——2015-10-21
原文:Top Support Tips Kevin Cassidy:全宽度的字段错误信息 有考虑过让验证信息显示在表单字段的下面(msgTarget:'under'),但最后发现验证信息被压缩显示了吗 ...
- SharePoint 2013: The "New Web Application" button is disabled is the central administration
安装完sharepoint foundation2013后,直接通过url访问管理中心,想进application management去新建的话会发现新建按钮是灰色的,即使你用的是系统管理员账号并且 ...
- 新手推荐:Hadoop安装教程_单机/伪分布式配置_Hadoop-2.7.1/Ubuntu14.04
下述教程本人在最新版的-jre openjdk-7-jdk OpenJDK 默认的安装位置为: /usr/lib/jvm/java-7-openjdk-amd64 (32位系统则是 /usr/lib/ ...
- EBS DBA指南笔记(二)
第三章 监控和诊断 本章涵盖以下几个主题:监测的方法,数据库的监测,apache的监测,forms的监测,并发管理器的监测,服务器的监测,网络的监测,其它的一些监测和诊断方法. 1.监测的方法:主 ...
- Caffe框架,图像数据转换成LMDB数据格式
小码农最近在研究深度学习,对所学知识做点记录,以供以后翻阅.在Caffe框架中,数据的格式都是LMDB的,如何将图像数据转换成这个格式呢? 首先,将图像数据和标签生成txt文档,执行一下代码: fin ...
- Java JDBC封装模式
模仿DBUtils里面的一些用法,下面是一些简单的实现数据集的操作的方法 下面使用到的两个bean.首先是userbean package bean; public class user { Stri ...
- iOS数据解析UI_14
数据解析:就是按照约定(假象)好的格式提取数据的过程就叫解析: 提供数据方(后台):工作就是把数据按照一定的格式存储起来 提取数据方(前台):工作就是把数据按照一定的格式读取出来 主流的格式:X ...
- NSString的几种常用方法—韩俊强博…
要把 "2011-11-29" 改写成 "2011/11/29"一开始想用ios的时间格式,后来用NSString的方法搞定. 1.创建NSString字符串 ...
- vim的modeline
vim的modeline可以让你针对每个文件进行文件级别的设置,这些设置是覆盖当前用户的vimrc中的设置的.vim默认关闭modeline,开启的话需要在你的home下的.vimrc文件中增加一行: ...
- 文件I/O实践(3) --文件共享与fcntl
文件共享 一个进程打开了两个文件 文件表条目(file-table-entry): 1.文件状态标志(file-status-flags): 读/写/追加/同步/非阻塞等; 2.当前文件偏移量 3.v ...