Problem Description

zpy 学习非常努力,想要评奖学金,而奖学金评定的一大标准就是绩点(GPA)高低。

单个科目的 GPA 的计算公式如下:f(x)=min(5.0,(x−45)×0.1) ,其中 x 表示课程成绩,众所周知当 x<60 时 f(x)=0 。

在评定奖学金时用的是平均学分绩点,简而言之就是以学分为权重的绩点。

假设你考了三门课,绩点分别为 3.5,4.1,4.2 ,学分分别为 3,5,1 ,那么最终的平均学分绩点为 (3.5×3+4.1×5+4.2×1)/(3+5+1)=3.91 。

同时,在 HDU 存在两种竞赛类加分政策,第一种是学科类竞赛加分,第二种是体育与艺术类竞赛加分。

对于第一类加分,会直接在你的平均学分绩点中加上奖励绩点;假设加分前你的 GPA 为 3.48 ,奖励了 1.8 的绩点,那么你的最终平均学分绩点为 5.28 (虽然学院文件中说的最高绩点是 5.0 封顶,但是实际评奖学金的时候是可以超过 5.0 的)。

第二类加分制度奖励的不是绩点,而是学分额度。具体来说,你可以选择学分总和小于等于学分额度的若干门课程,将这些课程的成绩通过如下公式更改。

HDU 存在新旧两种公式(分别是改革前和改革后),第一个是 g(x)=√x ×10 ,第二个是 t(x)=(x−70)×10/34+70 。不难发现第二个公式其实是根据第一个改良而来的(两个公式都可以让你考 36 分就及格,但是第二个公式在大于 70 分时反而会使分数变少,所以 zpy 不会在成绩大于等于 70 时使用第二个公式)。

依然假设你考了三门课,成绩分别为 81,49,36 ,学分分别为 3,5,1 ,奖励的学分额度为 5 分。
你可以选择 1 分和 3 分的两门课,也可以只选择 5 分的那门课。为了方便起见,zpy 会优先选择成绩最低的课程,如果有多门课程成绩一样,他会优先选择学分最少的课程。

如果以第一种公式计算,他最终的成绩为 90,49,60 ,如果使用第二种,他的最终成绩为 81,49,60 。
已知 zpy 所有课程的成绩以及学分、他的第一类加分的奖励绩点、他的第二类加分的学分额度,以及全年级其他同学的最终平均学分绩点。他想知道自己在改革前和改革后(也即使用第一种公式和第二种公式时)的年级排名。

上文提到的所有公式的输入与输出都不一定是整数!
友情提醒:在c++中,开根运算可以用 sqrt() 这个函数实现。

Input

第一行一个整数 T(1≤T≤100) ,表示测试数据组数。接下来包含 T 组测试数据。

对于每组测试数据,第一行输入两个整数 n,d(1≤n≤50,0≤d≤24) 和一个实数 c(0≤c≤1.8),表示 zpy 参加考试的课程数量、第二类加分的学分额度和第一类加分的奖励绩点。

接下来输入 n 行,每行两个整数 x,y(0≤x≤100,1≤y≤5) ,表示每门课程的成绩和学分。

接下来一行输入一个整数 k(1≤k≤100) ,表示全年级除了 zpy 外还有多少同学。

最后一行输入 k 个实数 ti(0≤ai≤5.0),表示每个人的最终平均学分绩点。

Output

对于每组测试数据,输出两个数表示改革前和改革后 zpy 的年级排名。

数据保证不会有人的绩点和 zpy 一样。

Sample Input

1
3 5 1.0
81 3
49 5
36 1
4
5.0 1.0 2.5 1.5

Sample Output

2 3

这道题的题目很长,给人的感觉很难,但是只要耐心的将题读完并且理解题意,就会发现这道题非常简单。
计算量很大,对代码细节要求比较高。

#include<iostream>
#include<math.h>
#include<algorithm>
using namespace std;
struct stu
{double cj,xf,cj1,cj2;double jd,jd1;
}ss[55];
bool cmp(stu a,stu b)
{if(a.cj==b.cj){return a.xf<b.xf;}else{return a.cj<b.cj;}
}
double gs1(int a)//公式1函数,根号中应该为整形
{double res;res=sqrt(a)*10;return res;
}
double gs2(double a)//公式2函数
{double res;res=(a-70)*10/34+70;return res;
}
double jdhs(double a)//绩点函数  众所周知,当 x<60 时 f(x)=0
{double res;if(a>=60){res=(a-45)*0.1;}else{res=0;}return res;
}
int main()
{int t;cin>>t;while(t--){int n,d;double zxf=0,jdz1=0,jdz2=0;double c;cin>>n>>d>>c;for(int a=0;a<n;a++){cin>>ss[a].cj>>ss[a].xf;zxf+=ss[a].xf;}sort(ss,ss+n,cmp);for(int a=0;a<n;a++)              //对公式1进行求解{int pd=0;                     //为了方便起见,zpy 会优先选择成绩最低的课程,如果有多门课程成绩一样,他会优先选择学分最少的课程。if(pd+=ss[a].xf<d){ss[a].cj1=gs1(ss[a].cj);}ss[a].jd1=jdhs(ss[a].cj1);jdz1+=ss[a].jd1*ss[a].xf;}for(int a=0;a<n;a++)           //对公式2进行求解{int pd=0;                  //为了方便起见,zpy 会优先选择成绩最低的课程,如果有多门课程成绩一样,他会优先选择学分最少的课程。if(pd+=ss[a].xf<d){ss[a].cj2=gs2(ss[a].cj);}ss[a].jd=jdhs(ss[a].cj2);jdz2+=ss[a].jd*ss[a].xf;}double pjfjd1=(jdz1/zxf)+c;double pjfjd2=(jdz2/zxf)+c;//cout<<pjfjd<<" "<<pjfjd1<<endl; //测试数值代码int xs;cin>>xs;              //输入比较学生人数double arr;int pdd=xs+1;         //加上zpy本人,不排除成为第5的可能int pddd=xs+1;        //加上zpy本人,不排除成为第5的可能for(int a=0;a<xs;a++) //进行比较{cin>>arr;if(pjfjd1>arr){pddd--;}if(pjfjd2>arr){pdd--;}}cout<<pddd<<" "<<pdd<<endl;}
}

热身赛T3(奖学金评定)相关推荐

  1. 奖学金设计mysql_基于JAVA的奖学金评定系统设计与实现(MySQL)(含录像)

    基于JAVA的奖学金评定系统设计与实现(MySQL)(含录像)(任务书,开题报告,外文翻译,毕业论文10000字,程序代码,MySQL数据库,答辩PPT,答辩视频录像) 摘  要 本文论述了奖学金评定 ...

  2. [附源码]java毕业设计高校奖学金评定管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  3. [附源码]计算机毕业设计JAVAjsp高校奖学金评定管理系统

    [附源码]计算机毕业设计JAVAjsp高校奖学金评定管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclisp ...

  4. 班级奖学金管理系统java_(奖学金评定管理系统设计)(最终版)

    <奖学金评定管理系统设计.doc>由会员分享,可免费在线阅读全文,更多与<(奖学金评定管理系统设计)(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库 ...

  5. [附源码]SSM计算机毕业设计高校奖学金评定管理系统JAVA

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  6. 基于Java的奖学金评定管理系统

    技术:Java.JSP等 摘要: 学生奖学金系统是根据现在高速的社会体制而设定的,通过各项成绩做到安全.快速.准确的奖学金评定和查询.分为三个模块,各自拥有的权限不同,适合在校学生和老师一起管理. 本 ...

  7. JSP学生奖学金系统JSP学生评奖评优系统JSP奖学金管理系统 JSP奖学金评定系统

    JSP学生奖学金系统JSP学生评奖评优系统JSP奖学金管理系统 JSP奖学金评定系统 protected void doGet(HttpServletRequest req, HttpServletR ...

  8. 基于java的奖学金评定系统设计与实现

    技术:Java.JSP等 摘要: 当今社会,计算机互联网技术发展迅速,越来越多的企业与单位的工作与互联网紧密相连,学校也不例外.奖学金评定工作是每个高校工作管理的重要而又复杂的部分,奖学金的种类繁多, ...

  9. 中南大学计算机学院优秀毕业论文,中南大学计算机学院研究生学业奖学金评定实施细则...

    计算机学院研究生学业奖学金评定实施细则 为激励研究生勤奋学习.潜心科研.勇于创新.积极进取,在全面实行研究生教育收费制度的情况下更好地支持研究生顺利完成学业,根据<中南大学研究生学业奖学金管理办 ...

最新文章

  1. forget word a out 1
  2. python 中文乱码问题解决方案
  3. Python中异常处理的用法
  4. python超时退出进程_Python如何实现让一个函数超时退出?
  5. 查看docker的端口映射情况
  6. JavaWeb学习之路——SSM框架之Spring(六)
  7. 翻译(六)——T-SQL的进阶之路:超过基础的2级水平:写子查询
  8. c# 调用c库dll ,char*转string的解决办法
  9. WildFly Swarm –将Java EE应用程序部署为独立的Jar
  10. Spring Tool Suite 4安装Lombok
  11. powerbi如何创建参数_创建PowerBI「参数」轻松搞定动态分析
  12. 拼接sql语句参数绑定
  13. js混淆还原工具_技术分享:几种常见的JavaScript混淆和反混淆工具分析实战
  14. Python SPSS教程
  15. FAT12文件系统详解
  16. 常用数据库URL地址的写法
  17. 关于转换JSON列表错误导致结果出错的问题
  18. int类型整数的表示范围
  19. matplotlib画会动的椭圆
  20. 咸鱼ESP32实例—RTC

热门文章

  1. 五分钟玩转Andriod开发环境配置
  2. matlab中regress函数教程,regress()函数
  3. 数值计算——线性最小二乘问题
  4. 【信奥赛一本通】1183:病人排队(详细代码)
  5. SQL SERVER 事务的使用(tran)
  6. 最新2022年高职大数据国赛任务书详解与模拟练习
  7. Pthon中的输出函数
  8. 逆水寒服务器维护公告,《逆水寒》2018年11月29日更新公告
  9. 噩梦射手(SurvivalShooter)教程(八)
  10. Linux 下配置JDK 并运行springboot项目进行访问 Tomcat的安装