【模拟】Class 解题报告
【问题描述】
信息班这期的课将要结束了,老师要从现在班上的同学中选出比较优秀的同学进入下一期的学习。而录取标准则是将平时作业和考试一起考虑,综合成绩排在前面的则录取。经过一番思考,老师作了以下的筛选计划:
- 设计两个参数x,y,学生总成绩为平时成绩的x%和考试成绩的y%。
- 将同学按总成绩排名,招收总成绩在前15的学生,不够15则全部录取。
注:总成绩在第15的如果有多人,则可以被同时录取。
例如:18个人总成绩从大到小依次为95,93,93,88,87,84,80,75,70,68,66,65,60,58,57,57,56,55。那么93,93同为第2名,而88为第4名,57,57同为第15名,都被录取。而56,55则不被录取。
老师因为招生培训的事情很忙,所以现在她把信息班学生的成绩表给了你,希望你能告诉她哪些同学被录取了。
【输入】
输入文件class.in
第一行有三个数N,x,y。表示信息班有N个同学以及参数x,y。
第二行N个数,分别为A1,A2,A3 … AN。Ai表示编号为i的同学的平时成绩。
第三行N个数,分别为B1,B2,B3 … BN。Bi表示编号为i的同学的考试成绩。
【输出】
输出文件class.out
共一行,为被录取同学的编号,按照升序输出。
【输入样例】
18 50 50
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34
35 33 31 29 27 25 23 21 19 17 15 13 11 9 7 5 3 1
【输出样例】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
【数据说明】
1<=N<=100
0<=x,y<=100
0<=平时成绩,考试成绩<=100
以上数据皆为整数
分析:简单的结构数据,比较简单的模拟,但是我居然WA了!考试的时候只有90分,因为在处理名次的时候有一个比较常识的地方(可是我不知道),第一名如果有两人并列的话,第三个人是第三名而不是第二名!因为这个细节没有处理好所以最后一个点没有过。另外在处理分数的时候可以避开小数处理,直接乘x,y,这样可以避免小数误差降低编程复杂度。总之简单的模拟题,送分的。下面是AC代码。
/*
ID: ringxu97
LANG: C++
TASK: class
SOLUTION: 模拟
*/
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
using namespace std;
const int maxn=100+10;
int n,x,y;
struct STU//A,B表示两次的分数,mark表示总分,num表示序号
{
int A,B;
int mark;
int num;
void calc(){mark=A*x+B*y;}
}s[maxn];
bool operator < (STU a,STU b)
{
if(a.mark==b.mark)return a.num<b.num;
return a.mark>b.mark;
}
bool hash[maxn];
void read()
{
scanf("%d%d%d",&n,&x,&y);
for(int i=1;i<=n;++i)
{
scanf("%d",&s[i].A);
s[i].num=i;
}
for(int i=1;i<=n;++i)
{
scanf("%d",&s[i].B);
s[i].calc();
//printf("%d mark:%d\n",i,s[i].mark);
}
}
int M;
void solve()
{
s[0].num=s[0].mark=-1;
memset(hash,0,sizeof(hash));
sort(s+1,s+1+n);
for(M=1;M<=15;++M)hash[s[M].num]=1;
for(M=16;M<=n;++M)
{
if(s[M].mark!=s[M-1].mark)break;
//printf("%4d mark:%4d cnt:%4d\n",s[i].num,s[i].mark,cnt);
hash[s[M].num]=1;
}
}
void print()
{
int res[maxn];
int *p=res;
for(int i=1;i<=n;++i)if(hash[i])*(p++)=i;
for(int *i=res;i<p-1;++i)printf("%d ",*i);
printf("%d\n",*(p-1));
}
int main()
{
freopen("class.in", "r", stdin);
freopen("class.out", "w", stdout);
read();//读入数据
solve();//排序
print();//出结果
return 0;
}
【模拟】Class 解题报告的更多相关文章
- 10.30 NFLS-NOIP模拟赛 解题报告
总结:今天去了NOIP模拟赛,其实是几道USACO的经典的题目,第一题和最后一题都有思路,第二题是我一开始写了个spfa,写了一半中途发现应该是矩阵乘法,然后没做完,然后就没有然后了!第二题的暴力都没 ...
- 2018.10.26NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 100 + 70\) 实际得分:\(40 + 100 + 70\) 妈妈我又挂分了qwq..T1过了大样例就没管,直到临考试结束前\(10min\)才发现大样例是假 ...
- 11.1NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 100 + 50\) 实际得分:\(100 + 100 + 50\) 感觉老师找的题有点水呀. 上来看T1,woc?裸的等比数列求和?然而我不会公式呀..感觉要凉 ...
- 2018.10.17NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 100 +100\) 实际得分:\(100 + 100 + 60\) 辣鸡模拟赛.. 5min切掉T1,看了一下T2 T3,感觉T3会被艹爆因为太原了.. 淦了20 ...
- 2018.10.16 NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 100 + 20 = 220\) 实际得分:\(100 + 100 + 30 = 230\) 辣鸡模拟赛.. T1T2都是一眼题,T3考验卡常数还只有一档暴力分. ...
- 20201115gryz模拟赛解题报告
写在前面 T1:期望100pts,实际0pts(7:50 ~ 8:50 T2:期望0pts,实际0pts(10:00 ~ 10:35 T3:期望20pts,实际40pts( 9:10 ~ 10:00, ...
- 20201102gryz模拟赛解题报告
简述我的苦逼做题经历 考的是NOIP2017day1原题, 开始看到小凯的疑惑时感觉特水,因为这题初中老师讲过, 很nice的秒切 T2发现是个大模拟,虽然字符串不太会用,但起码题意很好理解 边打代码 ...
- 20201101gryz模拟赛解题报告
写在前面 2020rp++ 停课的第一场模拟赛 拿上一年的上一年的day1来考的, 结果得分期望220pts,实际135pts,rank3,太菜了 考着考着机房灯突然灭了,当时慌的一批 以为断电代码要 ...
- 20161022 NOIP模拟赛 解题报告
好元素 [问题描述] 小A一直认为,如果在一个由N个整数组成的数列{An}中,存在以下情况: Am+An+Ap = Ai (1 <= m, n, p < i <= N , m,n ...
- 【模拟赛】BYVoid魔兽世界模拟赛 解题报告
题目名称(点击进入相关题解) 血色先锋军 灵魂分流药剂 地铁重组 埃雷萨拉斯寻宝 源文件名(.c/.cpp/.pas) scarlet soultap subway eldrethalas 输入文件名 ...
随机推荐
- CTE-递归[2]
在此之前写过一个CTE的递归,取出了所有的子节点,基本上可以满足大多数的需求,这里我们来延伸一下:首先我们回顾下原来的场景 图片的上半部分递归查出某个节点的所有子节点,这个我们已经通过CTE实现了,可 ...
- PropertyPlaceholderConfigurer的用法(使用spring提供的类读取数据库配置信息.properties)
http://www.cnblogs.com/wanggd/archive/2013/07/04/3172042.html(写的很好)
- Oracle AWR报告指标全解析-11011552
1-5 Top 5 Timed EventsWaits : 该等待事件发生的次数, 对于DB CPU此项不可用Times : 该等待事件消耗的总计时间,单位为秒, 对于DB CPU 而言是前台进程所消 ...
- async await的前世今生
async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们编程埋下了一些隐 ...
- 打开自定义链接新窗口(safari JS prompt的坑!)2016.03.08
很简单的一个小练习,但做的过程中发现safari的一个坑,使用prompt()方法的时候,点击取消和不输入一样,会返回空字符' ',而不是null! 要求: 制作新按钮,"新窗口打开网站&q ...
- C /CLI思辨录[阅读记录]
C /CLI思辨录之拷贝构造函数(避免多个实例在相同的堆对象的错误处理) http://west263.com/info/html/chengxusheji/C-C--/20080224/9247.h ...
- C# winform DataGridView操作 (转)
C# DataGridView控件动态添加新行 DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如 ...
- script加defer="defer" 的意义
<script defer="defer">alert("页面加载完我才执行的")</script>先看到这段话 然后再执行上面的 JS ...
- C# 进销存系统开发框架
C/S系统开发框架-企业版 V4.0 (Enterprise Edition) 简介: http://www.csframework.com/cs-framework-4.0.htm 视频下载: 百度 ...
- python自动开发之第十八天
一.JS正则 test - 判断字符串是否符合规定的正则 rep = /\d+/; rep.test("asdfoiklfasdf89asdfasdf") # true rep = ...