pat 乙级 1015. 德才论 (25) c++
来源:互联网 发布:毛星云windows 编辑:程序博客网 时间:2024/05/22 17:46
http://39.106.25.239
个人网站 欢迎访问 交流
1015. 德才论 (25)
宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”
现给出一批考生的德才分数,请根据司马光的理论给出录取排名。
输入格式:
输入第1行给出3个正整数,分别为:N(<=105),即考生总数;L(>=60),为录取最低分数线,即德分和才分均不低于L的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;其他达到最低线L的考生也按总分排序,但排在第三类考生之后。
随后N行,每行给出一位考生的信息,包括:准考证号、德分、才分,其中准考证号为8位整数,德才分为区间[0, 100]内的整数。数字间以空格分隔。
输出格式:
输出第1行首先给出达到最低分数线的考生人数M,随后M行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。
输入样例:14 60 8010000001 64 9010000002 90 6010000011 85 8010000003 85 8010000004 80 8510000005 82 7710000006 83 7610000007 90 7810000008 75 7910000009 59 9010000010 88 4510000012 80 10010000013 90 9910000014 66 60输出样例:
1210000013 90 9910000012 80 10010000003 85 8010000011 85 8010000004 80 8510000007 90 7810000006 83 7610000005 82 7710000002 90 6010000014 66 6010000008 75 7910000001 64 90
提交代码
思路分析:
本题的考点就是compare函数排序。 最重要的就是对数据对象进行排序,关键的核心也在于如何写排序条件,实际上在你掌握了compare方法的原理之后,再声明一个结构体数组这个题就迎刃而解了。
(我就是不太熟悉c++的开始用的java写的但就是有三个测试点不能a,在网上找到别人的java代码后也是那三个点不能a,(虽然在牛客网的系统上可以a),经过改造后的代码在c++里实现果然就通过了,但还是要注意在多次输出的时候,最好采用printf()的方式 ,某些情况下会有超时的情况(这个题就是)!!!)。
思想很简单 ,看代码实现吧
#include <iostream>#include<vector>#include<algorithm>using namespace std;struct Student{ int xue; int de; int cai; int zong;};bool compare(Student o1,Student o2){if(o1.zong != o2.zong){return o1.zong > o2.zong;}else if(o1.de != o2.de ){return o1.de > o2.de;}else{return o2.xue > o1.xue;} }int main(){int N,L,H;scanf("%d%d%d",&N,&L,&H);vector<Student> a1;vector<Student> a2;vector<Student> a3;vector<Student> a4;for(int i=0;i<N;i++){int xue,de,cai;cin>>xue>>de>>cai;if(de>=L && cai>=L){Student stu;stu.xue=xue;stu.de = de;stu.cai = cai;stu.zong = cai+de;if(de >= H && cai>= H){a1.push_back(stu);}else if(cai <H && de>=H){a2.push_back(stu);}else if(cai <H && de <H && de>=cai ){a3.push_back(stu);}else {a4.push_back(stu);}}}sort(a1.begin(),a1.end(),compare);sort(a2.begin(),a2.end(),compare);sort(a3.begin(),a3.end(),compare);sort(a4.begin(),a4.end(),compare);cout<<a1.size()+a2.size()+a3.size()+a4.size()<<endl;for(int i=0;i<a1.size();i++){printf("%d %d %d\n",a1[i].xue,a1[i].de,a1[i].cai);}for(int i=0;i<a2.size();i++){printf("%d %d %d\n",a2[i].xue,a2[i].de,a2[i].cai);}for(int i=0;i<a3.size();i++){printf("%d %d %d\n",a3[i].xue,a3[i].de,a3[i].cai);}for(int i=0;i<a4.size();i++){printf("%d %d %d\n",a4[i].xue,a4[i].de,a4[i].cai);}return 0;}
java代码(19分):
import java.io.BufferedInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
class Student{
public int xue;
public int de;
public int cai;
public int zong;
public Student(int xue,int de, int cai, int zong) {
super();
this.xue = xue;
this.de = de;
this.cai = cai;
this.zong = zong;
}
public void toSTring(){
System.out.println(xue+" "+de +" "+cai );
}
}
public class Main{
static Scanner scan = new Scanner(new BufferedInputStream(System.in));
public static void main(String[] args) {
ArrayList<Student> a1=new ArrayList<Student>();
ArrayList<Student> a2=new ArrayList<Student>();
ArrayList<Student> a3=new ArrayList<Student>();
ArrayList<Student> a4=new ArrayList<Student>();
int N = scan.nextInt();
int L =scan.nextInt();
int H =scan.nextInt();
Comparator<Student > c =new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2){
if(o1.zong != o2.zong){
return o2.zong - o1.zong;
}else if(o1.de != o2.de ){
return o2.de - o1.de;
}else return o1.xue - o2.xue;
}
};
for(int i=0;i<N;i++){
int xue,de,cai;
xue = scan .nextInt();
de = scan.nextInt();
cai = scan.nextInt();
if(de>=L && cai>=L){
if(de >= H && cai>= H){
a1.add(new Student(xue,de, cai, de+cai));
}else if(cai <H && de>=H){
a2.add(new Student(xue,de, cai, de+cai));
}else if(cai <H && de <H && de>=cai ){
a3.add(new Student(xue,de , cai , de+cai));
}else {
a4.add(new Student(xue,de , cai , de + cai));
}
}
}
Collections.sort(a1,c);
Collections.sort(a2,c);
Collections.sort(a3,c);
Collections.sort(a4,c);
System.out.println(a1.size()+a2.size()+a3.size()+a4.size());
for(int i=0;i<a1.size();i++){
a1.get(i).toSTring();
}for(int i=0;i<a2.size();i++){
a2.get(i).toSTring();
}
for(int i=0;i<a3.size();i++){
a3.get(i).toSTring();
}
for(int i=0;i<a4.size();i++){
a4.get(i).toSTring();
}
}
}
- PAT-乙级-1015. 德才论 (25)
- 【PAT】(乙级)1015. 德才论 (25)
- PAT乙级.1015. 德才论 (25)
- 1015. 德才论 (25)-PAT乙级
- PAT乙级 1015. 德才论 (25)
- PAT乙级1015. 德才论 (25)
- [PAT乙级]1015. 德才论 (25)
- pat 乙级 1015. 德才论(25)
- PAT 乙级练习题1015. 德才论 (25)
- 1015. 德才论 (25)--PAT乙级
- PAT乙级1015. 德才论(25)
- pat 乙级 1015. 德才论 (25) c++
- PAT乙级1015. 德才论 (25)
- PAT乙级 1015. 德才论
- PAT 乙级 1015.德才论
- [PAT-乙级]1015.德才论
- PAT乙级 德才论 (25)
- PAT乙级—1015. 德才论 (25)-native
- 流水账
- Python,字典
- 数据结构Note1:Hash 表(散列表/哈希表)
- 12.2日笔记
- 浅谈函数的调用过程,栈帧的创建和销毁
- pat 乙级 1015. 德才论 (25) c++
- 初始MQTT协议(3)
- 数据结构之--堆(Java代码)
- MVC, MVP, MVVC 模式整理
- 共用体知识总结
- java第一篇:使用jdbc进行关联查询以及java开发常见问题
- CodeForces 146C(脑洞)
- Java 之 序列化和反序列化的工具类
- OpenGLES2.0基础(3)