1062 Talent and Virtue (25 分)排序(水题)

题目

About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about people’s talent and virtue. According to his theory, a man being outstanding in both talent and virtue must be a “sage(圣人)”; being less excellent but with one’s virtue outweighs talent can be called a “nobleman(君子)”; being good in neither is a “fool man(愚人)”; yet a fool man is better than a “small man(小人)” who prefers talent than virtue.

Now given the grades of talent and virtue of a group of people, you are supposed to rank them according to Sima Guang’s theory.

Input Specification:
Each input file contains one test case. Each case first gives 3 positive integers in a line: N ( ≤ 105 ) N (≤105) N(105), the total number of people to be ranked; L ( ≥ 60 ) L (≥60) L(60), the lower bound of the qualified grades – that is, only the ones whose grades of talent and virtue are both not below this line will be ranked; and H ( &lt; 100 ) H (&lt;100) H(<100), the higher line of qualification – that is, those with both grades not below this line are considered as the “sages”, and will be ranked in non-increasing order according to their total grades. Those with talent grades below H but virtue grades not are cosidered as the “noblemen”, and are also ranked in non-increasing order according to their total grades, but they are listed after the “sages”. Those with both grades below H, but with virtue not lower than talent are considered as the “fool men”. They are ranked in the same way but after the “noblemen”. The rest of people whose grades both pass the L line are ranked after the “fool men”.

Then N lines follow, each gives the information of a person in the format:

ID_Number Virtue_Grade Talent_Grade

where ID_Number is an 8-digit number, and both grades are integers in [0, 100]. All the numbers are separated by a space.

Output Specification:
The first line of output must give M ( ≤ N ) M (≤N) M(N), the total number of people that are actually ranked. Then M lines follow, each gives the information of a person in the same format as the input, according to the ranking rules. If there is a tie of the total grade, they must be ranked with respect to their virtue grades in non-increasing order. If there is still a tie, then output in increasing order of their ID’s.

Sample Input:

14 60 80
10000001 64 90
10000002 90 60
10000011 85 80
10000003 85 80
10000004 80 85
10000005 82 77
10000006 83 76
10000007 90 78
10000008 75 79
10000009 59 90
10000010 88 45
10000012 80 100
10000013 90 99
10000014 66 60

Sample Output:

12
10000013 90 99
10000012 80 100
10000003 85 80
10000011 85 80
10000004 80 85
10000007 90 78
10000006 83 76
10000005 82 77
10000002 90 60
10000014 66 60
10000008 75 79
10000001 64 90

解题思路

  题目大意: 给定两个分界线H和L,给你N个人的id和德、才分数,按照如下规则排序——
  1. 德才都超过H的,是圣人,排第一位;
  2. 才华低于H,但是高于L,但是德高于H,是君子,排第二位;
  3. 德才均在[L,H)之间,但是德比才高,是愚者,排第三位;
  4. 然后是德才都超过L的部分;
  5. 德才只要有一个不过L的,不参与排名。
  解题思路: 把规则弄清楚了之后,直接用sort排序即可,考虑到数据量N的规模比较大,使用scanf和printf作为输入输出。

/*
** @Brief:No.1061 of PAT advanced level.
** @Author:Jason.Lee
** @Date:2018-12-28
** @Solution: Accepted!
*/
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
struct people{int talent;int virtue;int id;int flag;
};
bool cmp(people a,people b){if(a.flag==b.flag){if((a.virtue+a.talent)==(b.virtue+b.talent)){if(a.virtue==b.virtue){return a.id<b.id;}else{return a.virtue>b.virtue;}}else{return a.virtue+a.talent>b.virtue+b.talent;}}else{return a.flag<b.flag;}
}int main(){int N,L,H;while(scanf("%d%d%d",&N,&L,&H)!=EOF){vector<people> vp;people input;for(int i=0;i<N;i++){scanf("%d%d%d",&input.id,&input.virtue,&input.talent);if(input.virtue>=H&&input.talent>=H){// sagesinput.flag = 1;}else if((input.talent<H&&input.talent>=L)&&input.virtue>=H){// noblemeninput.flag = 2;}else if((input.virtue<H&&input.virtue>=L) && (input.talent<H&&input.talent>=L) && (input.virtue>=input.talent)){// foolmeninput.flag = 3;}else if(input.virtue>=L&&input.talent>=L){// the restinput.flag = 4;}else{continue;}vp.push_back(input);}		sort(vp.begin(),vp.end(),cmp);printf("%d\n",vp.size());for(auto elem:vp){printf("%08d %d %d\n",elem.id,elem.virtue,elem.talent);}}return 0;
}

在这里插入图片描述

总结

  这道题是PTA乙级1015 德才论的英文版,如果英文阅读上没有障碍,基本上没有太大的解题难度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/69327.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PAT甲级 1011 World Cup Betting (20 分) 题解

\quad 这个题难在题意理解上面&#xff0c;说白了就是给你九个数&#xff0c;三个一组&#xff0c;找出一组中最大的数字并记录下这个数所属类别(W,T,L)。一行是一组。最后把每个组最大的数乘起来&#xff0c;乘0.65&#xff0c;再减去1&#xff0c;最后将所得结果乘2输出。即 …

day8 足球运动员分析

足球运动员分析 背景信息 当前&#xff0c;足球运动是最受欢迎的运动之一&#xff08;也可以说没有之一&#xff09;。 任务说明 我们的任务&#xff0c;就是在众多的足球运动员中&#xff0c;发现统计一些关于足球运动员的共性&#xff0c;或某些潜在的规律。 数据集描述…

The Most Common Habits from more than 200 English Papers written by Graduate Chinese Students

目录 定冠词/不定冠词的使用 a an the句子不要太长在段落开始直接陈述中心思想不要在段落开头直接使用时间状语从句将重要的主语放在最最开始以表示强调which/that所引导的定语从句的指代不明Respectively的使用有关in this paper/study数字‘Figure’ and ‘Table’‘such as’…

GPT系列的数据集之谜

文&#xff5c;Alan D. Thompson 源&#xff5c;OneFlow 译&#xff5c;杨婷、徐佳渝、贾川 半个月以来&#xff0c;ChatGPT这把火越烧越旺。国内很多大厂相继声称要做中文版ChatGPT&#xff0c;还公布了上线时间表&#xff0c;不少科技圈已功成名就的大佬也按捺不住&#xf…

Claude 2 解读 ChatGPT 4 的技术秘密:细节:参数数量、架构、基础设施、训练数据集、成本...

“ 解密 ChatGPT 4的模型架构、训练基础设施、推理基础设施、参数计数、训练数据集组成、令牌计数、层数、并行策略、多模态视觉适应、不同工程权衡背后的思维过程、独特的实施技术。” ‍‍‍‍ 01 — 最近偶然看到一份文档《GPT-4 Architecture, Infrastructure, Training Da…

Window的创建

Window的创建 上一篇说到了Window和WindowManager的关系并且讲述了WindowManager如何添加Window与Window内部的三个方法的实现 这篇主要讲几个常见的Window的创建比如Activity,Dialog和Toast 其中Activity属于应用Window Dialog属于子Window Toast属于系统Window z-order…

密码验证 长度八位包含字母数字特殊字符

View Code 1 #region 密码验证2 if (tbPassword.Text "")3 {4 CommonFunction.ShowMessage(this.Page, "密码不能为空");5 return;6 }7 …

smart计算机英语作文,关于科技的英语作文(精选5篇)

关于科技的英语作文(精选5篇) 在平平淡淡的日常中&#xff0c;大家都跟作文打过交道吧&#xff0c;写作文可以锻炼我们的独处习惯&#xff0c;让自己的心静下来&#xff0c;思考自己未来的方向。一篇什么样的作文才能称之为优秀作文呢&#xff1f;下面是小编精心整理的关于科技…

华为鸿蒙的科技话题作文800字,科技的发展作文800字4篇

科技的发展作文800字4篇 科技改变生活&#xff0c;可以说没有科技的高速发展就没有今天的我们。那么以下是小编为大家整理的科技的发展作文800字&#xff0c;欢迎大家阅读&#xff01; 科技的发展作文800字(一) 随着科学技术的高度发展&#xff0c;科技是利是弊成了人们热议的话…

计算机未来的发展英语作文,关于科技发展英语作文(通用10篇)

关于科技发展英语作文(通用10篇) 在平平淡淡的学习、工作、生活中&#xff0c;大家总免不了要接触或使用作文吧&#xff0c;写作文可以锻炼我们的独处习惯&#xff0c;让自己的心静下来&#xff0c;思考自己未来的方向。那么一般作文是怎么写的呢&#xff1f;下面是小编为大家整…

计算机技术发展作文,【推荐】科技发展作文三篇

【推荐】科技发展作文三篇 在日复一日的学习、工作或生活中&#xff0c;大家都写过作文&#xff0c;肯定对各类作文都很熟悉吧&#xff0c;作文是经过人的思想考虑和语言组织&#xff0c;通过文字来表达一个主题意义的记叙方法。相信许多人会觉得作文很难写吧&#xff0c;下面是…

Android混合开发快速上手掌握

目录 一 混合开发简介 二 Android-Js互调 2.1 准备自己的html文件 2.2 WebView控件的准备设置 2.3 Android调用Js代码 2.4 Js调用Android方法和传参数 三 常用的几个方法和注意点 3.1 WebViewClient中的shouldOverrideUrlLoading拦截url 3.2 WebViewClient中的onPageS…

安卓开发快速集成即时通讯聊天,只需几行代码轻松实现

信贸通即时通讯系统&#xff0c;一款跨平台可定制的 P2P 即时通信系统&#xff0c;为电子商务网站及各行业门户网站和企事业单位提供“一站式”定制解决方案&#xff0c;打造一个稳定&#xff0c;安全&#xff0c;高效&#xff0c;可扩展的即时通信系统&#xff0c;支持在线聊天…

IM即时通讯聊天,5分钟显示一次时间。JS

想在聊天界面想做个和微信一样的时间显示 达到下图这种效果 百度了一下&#xff0c;发现都是有点不全的&#xff0c;把网上的合并了一下组成下方的js文件 记录一下 1.建议新建一个JS文件 common.js 1.第一个方法是把时间戳转成具体时间日期 /** * 对Date的扩展&#xff0c;将…

GPT-4 Copilot X震撼来袭!写代码效率10倍提升,码农遭降维打击

因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享 点击关注#互联网架构师公众号&#xff0c;领取架构师全套资料 都在这里 0、2T架构师学习资料干货分 上一篇&#xff1a;2T架构师学习资料干货分享 大家好&#xff0c;我是互联网架构师&…

什么是生成器 — 一篇文章让你看懂

嗨嗨&#xff0c;我是小圆 ~ 今天来给大家讲讲什么是生成器 生成器是 Python 初级开发者最难理解的概念之一&#xff0c;虽被认为是 Python 编程中的高级技能&#xff0c;但在各种项目中可以随处见到生成器的身影&#xff0c;你得不得去理解它、使用它、甚至爱上它。 提到生成器…

怎么才能大批量生成原创文章

要大批量生成原创文章并不容易。毕竟&#xff0c;原创文章需要花费较多地时间和精力&#xff0c;才能够展现出高质量、有价值地内容。以下是一些方法可以帮助您大批量生成原创文章&#xff1a;1. 利用关键词通过使用关键词工具&#xff0c;寻找与您网站或品牌相关地长尾关键词。…

新媒体必备小技能——文章生成图片

相信公众号运营大家都不陌生了&#xff0c;与运营和自媒体相关的工作大多都会用到图文编辑&#xff0c;当然好看的排版直接影响读者的阅读体验&#xff01;在日常编辑推文以及制作宣传的过程中&#xff0c;图片是必不可少的重要组成部分&#xff01;96编辑器的一键生成图片功能…

狗屁文章生成器-批量生成原创文章自动发布网站-免费下载

狗屁文章生成器,什么是狗屁文章生成器&#xff0c;狗屁文章生成器从字面意思都能理解出来&#xff0c;就是生成的文章毫无逻辑感&#xff0c;胡乱生成&#xff0c;毫无可读性。只需要输入关键词就能实现狗屁文章生成。狗屁文章生成器。火于2020年某老板喊一员工写3000字原创检讨…

AI文章生成

文章 &#x1f9d0;一、我们在做什么&#x1f971;二、项目详情1.前端&#x1f642;&#xff08;1&#xff09;基本要求&#x1f610;&#xff08;2&#xff09;批量操作功能&#x1f641;&#xff08;3&#xff09;模式选择功能 &#x1f61f;&#xff08;4&#xff09;模型选…