每日一题 『谁在说谎

阅读: 评论:0

每日一题 『谁在说谎

每日一题 『谁在说谎

L1 - 7 『谁在说谎』

分数 20

全屏浏览题目

切换布局

作者 JMU_ACM

单位 集美大学

  • 贝贝(并不)是一个“知乎迷”
  • 于是贝贝今天打开知乎,就刷到了以下的内容

  • 贝贝恍然大悟,直接跟同学们讨论成绩的时候,大家都为了照顾最弱的贝贝,故意将各自的成绩报低了好几十分,为的就是照顾贝贝的感受,只有贝贝自己考的是真的低
  • 贝贝瞅了瞅自己68分的成绩单,一时间接受不了这个事实。
  • 所以,贝贝此时打算揪出有谁在谎报成绩
  • 于是贝贝从老师那边搞来了n个人(不包括贝贝的,因为贝贝本来就知道自己的成绩)前m次的真实考试成绩,并且通过水群得到了这n个人在群里面讨论时候报出的这次考试的成绩
  • 但是贝贝是个很笨的孩子,看不出有谁可能说谎,于是他就找到了一个神犇(也就是你),让你帮忙找出有谁可能说谎
  • 设贝贝前n次考试的平均成绩为x0​,这次考试的成绩为y0​,某个人的前n次考试成绩的平均值为xi​,这次考试报出的成绩为yi​。如果他之前的平均成绩比贝贝等于贝贝,这次考试报的成绩比贝贝,即xi​≥x0​,且yi​<y0​,那么他就有可能在说谎。
  • 本题要求你按字典序从小到大输出有可能说谎的人的姓名

输入格式:

第一行,输入正整数n和m,其含义同题意中的。

第二行,包含m个整数,代表贝贝前m次考试的真实成绩。

接下来的n行,对于第i行给定一个字符串S和m个整数,代表编号为i的人姓名为S,前m次考试的成绩。

最后一行,给定n+1个整数,分别为a0​到an​,其中a0​代表贝贝本次考试的真实成绩,ai​代表编号为i的人报出的本次考试成绩。

输出格式:

输出可能说谎的人的姓名,每个姓名占一行。如果没有人可能说谎则输出Yeah! Nobody!

输入样例:

4 3
68 68 68
WDW 100 100 99
HX 99 100 100
LBN 68 68 68
JXJ 100 100 99
68 67 65 68 60

输出样例:

HX
JXJ
WDW

Hint

对于本题100%的数据,1≤n≤20,1≤m≤105,S的长度在[1,5]之间,且仅由英文字母组成,且保证n个人中没有重复名字

因为大家可能会参加不同的满分制的比赛与考试,故题目中所有的单个成绩的范围都在[0,105]之间。特别的,考虑到贝贝是个菜狗,分数可能因为自身太菜被改卷老师扣成负数,故贝贝的单个成绩范围在[−105,105].

题目虽然很长,但是看完题目,我们提取到的重要信息就是要知道每个人的名字,和他们的之前考试的平均成绩,还有当前考试的成绩 那么非常显然就需要用到结构体,来记录每个人的信息:

typedef struct node{string name;double oldgrade;double newgrade;
}stu;

 其中贝贝的成绩可以单独处理,不需要放入结构体当中

记录其他人的成绩:

 for(int i = 0;i<n;i++){cin>>tempname;temp = 0;for(int j = 0;j<m;j++){cin>>x;temp+=x;}stus[i].name = tempname;stus[i].oldgrade = (1.0*temp)/m;}

然后读取贝贝的成绩,和其他人的成绩 

int jay;//贝贝这次考试成绩cin>>jay;for(int i = 0;i<m;i++) {cin>>stus[i].newgrade;}

然后顶一个一个string的vector数组,来存放满足题目需要条件的人

vector<string> re;for(int i = 0;i<n;i++){if(stus[i].oldgrade>=BGrade&&stus[i].newgrade<jay)re.push_back(stus[i].name);}

因为题目要求需要升序,所以我们可以直接使用vectoer自带的sort函数,sort默认是升序,所以直接用就可以,然后输出就可以:

sort(re.begin(),re.end());pty()) cout<<"Yeah! Nobody!";for(int i = 0;i<re.size();i++)cout<<re[i]<<endl;

整体代码实现:

#include<bits/stdc++.h>
using namespace std;
typedef struct node{string name;double oldgrade;double newgrade;
}stu;
int main()
{int n,m;cin>>n>>m;string tempname;double BGrade = 0,temp = 0;stu stus[n];int x;for(int i = 0;i<m;i++){cin>>x;BGrade+=x;}BGrade = 1.0*BGrade/m;for(int i = 0;i<n;i++){cin>>tempname;temp = 0;for(int j = 0;j<m;j++){cin>>x;temp+=x;}stus[i].name = tempname;stus[i].oldgrade = (1.0*temp)/m;}int jay;cin>>jay;for(int i = 0;i<m;i++) {cin>>stus[i].newgrade;}vector<string> re;for(int i = 0;i<n;i++){if(stus[i].oldgrade>=BGrade&&stus[i].newgrade<jay)re.push_back(stus[i].name);}sort(re.begin(),re.end());pty()) cout<<"Yeah! Nobody!";for(int i = 0;i<re.size();i++)cout<<re[i]<<endl;return 0;
}

本文发布于:2024-02-04 13:02:22,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170707855055807.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:谁在
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23