1062 Talent and Virtue(排序)
这类题目归结于常用技巧与算法,有很鲜明的套路,重在理解其规则,通常写起来不算太复杂。
题目描述:
题目大致意思:
输入N和最低下限和最高上限,接着输入N个人的编号,美德和天赋。如果美德和天赋都不低于最高上限则被称为圣人,把所有的圣人按照总分从高到低进行排列,如果总分相同,则按美德从高到底进行排序,如果美德值也相同,则按编号从小到大进行排序。
如果天赋值低于最高上限,但是美德值不低于最高上限,则被称为君子,把所有的君子按照总分从高到低进行排列,如果总分相同,则按美德从高到底进行排序,如果美德值也相同,则按编号从小到大进行排序。
如果美德值和天赋值都低于最高上限,但是美德值不比天赋值低,则被称为愚人,把所有的愚人按照总分从高到低进行排列,如果总分相同,则按美德从高到底进行排序,如果美德值也相同,则按编号从小到大进行排序。
接着把所有剩余的按照总分从高到低进行排列,如果总分相同,则按美德从高到底进行排序,如果美德值也相同,则按编号从小到大进行排序。
美德值和天赋值有任何一个低于最低下限的不参与排列。
大致思路:
使用一个结构体来存储每个人的信息,使用四个不同的结构体数组来存储每种人的信息,按照排序规则,分别对四个结构体数组进行排序即可(暴力解决)。
提交结果:
提交代码如下:
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
struct Peopel
{string id;int virtue;int talent;
};
vector<Peopel> shengren;
vector<Peopel> junzi;
vector<Peopel> yuren;
vector<Peopel> xiaoren;
bool cmp1(Peopel p1, Peopel p2)
{if (p1.talent + p1.virtue != p2.talent + p2.virtue)return p1.talent + p1.virtue > p2.talent + p2.virtue;else if (p1.virtue != p2.virtue)return p1.virtue > p2.virtue;elsereturn p1.id < p2.id;
}
int main()
{int n, l, h;cin >> n >> l >> h;for (int i = 0; i < n; i++){Peopel peopel;cin >> peopel.id >> peopel.virtue >> peopel.talent;if (peopel.virtue < l || peopel.talent < l)continue;if (peopel.virtue >= h && peopel.talent >= h)shengren.push_back(peopel);else if (peopel.talent < h && peopel.virtue >= h)junzi.push_back(peopel);else if (peopel.talent < h && peopel.virtue < h && peopel.virtue >= peopel.talent)yuren.push_back(peopel);elsexiaoren.push_back(peopel);}sort(shengren.begin(), shengren.end(), cmp1);sort(junzi.begin(), junzi.end(), cmp1);sort(yuren.begin(), yuren.end(), cmp1);sort(xiaoren.begin(), xiaoren.end(), cmp1);cout << shengren.size() + junzi.size() + yuren.size() + xiaoren.size() << endl;for (int i = 0; i < shengren.size(); i++)cout << shengren[i].id << " " << shengren[i].virtue << " " << shengren[i].talent << endl;for (int i = 0; i < junzi.size(); i++)cout << junzi[i].id << " " << junzi[i].virtue << " " << junzi[i].talent << endl;for (int i = 0; i < yuren.size(); i++)cout << yuren[i].id << " " << yuren[i].virtue << " " << yuren[i].talent << endl;for (int i = 0; i < xiaoren.size(); i++)cout << xiaoren[i].id << " " << xiaoren[i].virtue << " " << xiaoren[i].talent << endl;}
本次提交后累计得分573,排名为13645。
1062 Talent and Virtue(排序)相关推荐
- PAT甲级1062 Talent and Virtue:[C++题解]结构体、哈希表
文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 分4个vector,单独排序即可. ac代码 #include<bits/stdc++.h> using namespa ...
- 1062 Talent and Virtue (25 分)
1062 Talent and Virtue (25 分) 题意 先给出三个数N(成员人数),L(及格线),H(优秀线) 给出一组成员信息,包括id,品德,才能,给这组成员排序. 当该成员品德和才能都 ...
- 1062 Talent and Virtue 25
1062 Talent and Virtue 25 题目链接:A1062 Talent and Virtue 25 问题思路 我尝试了两种思路: 根据每个人的分数确定其是哪个级别(rank)的人,以总 ...
- PAT 甲级 1062 Talent and Virtue
1062 Talent and Virtue 题目大意:给出一组人数,按照要求分类再排序输出.圣人是virtue和talent都超过h的人,君子是virtue超过h并且talent位于[l,h)区间内 ...
- PAT-B 1015. 德才论(同PAT 1062. Talent and Virtue)
1. 在排序的过程中,注意边界的处理(小于.小于等于) 2. 对于B-level,这题是比較麻烦一些了. 源代码: #include <cstdio> #include <vecto ...
- 1062. Talent and Virtue (25)-PAT甲级真题
About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about ...
- PAT甲级1062 Talent and Virtue
About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about ...
- 1062. Talent and Virtue (25)
About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about ...
- 1062 Talent and Virtue (25分)
题目地址 About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked a ...
最新文章
- 某站点下载资源自己主动评论器
- Selenium3+MoocTest环境搭建常见问题解决方案
- 编译 PHP7.0为什么那么慢,CentOS 7编译安装php7.0.7以及可能遇到的问题的解决方案...
- HDU - 6601 Keen On Everything But Triangle(主席树)
- 最新设备可利用积雪发电?UCLA研究出积雪式摩擦奈米发电机
- win10如何远程连接BCC云服务器?
- verilog 学习记(如何编写assert)
- C#版 - Leetcode 201. 数字范围按位与(bitwise AND) - 题解
- 利用Depends查看win系统下exe程序的依赖项
- 美团2015年校园招聘部分笔试题
- 四川轻化工大学计算机网络技术分数线,四川轻化工大学录取投档线
- Linux中ps命令 ps aux与ps -ef的区别
- 如何找实习工作?怎么准备?
- 【我的区块链之路】- 谈一谈IPFS原理及玩法
- 电脑游戏业编年史之十二──叛逆
- 一、判别一个分解的无损连接性
- WPF自定义日期时间控件
- 用verilog HDL实现数字基带信号的2FSK调制
- DRL实战:DDPG A3C | Gym环境中经典控制问题Pendulum-v0
- 富贵不压重发_贵人不顶重发是什么意思(贵人不顶重发出自哪里)
热门文章
- linux安装gbase8a
- 编写 Matlab mexFunction (C mex)
- Navicat 连接Oracle数据库提示cannot create oci handles问题解决方法
- Day 7 2021.3.8Final-权限修饰符-部分常用类-集合-泛型
- 云计算具有什么平台_云计算?通俗易懂点讲云计算是什么意思?
- 【白帽优化大师】免费分享垃圾站截留别人网站流量技术
- 关于CSS3:justify-self,justify-items和justify-content之间的区别
- Swift学习之闭包
- Windows截图工具合集
- 「镁客早报」恒大健康称首款电动汽车拟6月投产;产业链透露苹果正悄悄准备Apple Car...