【PAT】B1015 德才论
这道题算是挺简单,我在群里看到的别人琢磨好久过不去,大多是因为没有考虑好四种等级的判断条件
一定要保证四种判断条件正确。
下面这是我的代码,比较笨。后边有别人那学来的聪明些的方法
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
struct student{
int number,de,cai,sum;
}A[100000],//H(<100为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,
B[100000],//才分不到但德分到线的一类考生属于“德胜才”,
C[100000],//德才分均低于H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者
D[100000];//其他达到最低线L的考生也
int num=0;
bool cmp(student A,student B){
if(A.sum!=B.sum) return A.sum>B.sum;
else if(A.de!=B.de) return A.de>B.de;
else return A.number<B.number;
}
void prr(student *arr,int Si){
for(int i=0;i<Si;i++){
printf("%08d %d %d",arr[i].number,arr[i].de,arr[i].cai);
num--;
if(num!=0)printf("\n");
}
}
int main(){
int N,L,H,AA,BB,CC,DD;
AA=BB=CC=DD=0;
student temp;
scanf("%d%d%d",&N,&L,&H);
for(int i=0;i<N;i++){
scanf("%d %d %d",&temp.number,&temp.de,&temp.cai);
temp.sum=temp.de+temp.cai;
if(temp.de>=L&&temp.cai>=L){
num++;
if(temp.cai>=H&&temp.de>=H){A[AA++]=temp;continue;}
if(temp.de>=H&&temp.cai<H) {B[BB++]=temp;continue;}
if(temp.cai<H&&temp.de<H&&temp.de>=temp.cai){C[CC++]=temp;continue;}
D[DD++]=temp;
}
}
sort(A,A+AA,cmp);
sort(B,B+BB,cmp);
sort(C,C+CC,cmp);
sort(D,D+DD,cmp);
printf("%d\n",num);
prr(A,AA);
prr(B,BB);
prr(C,CC);
prr(D,DD);
return 0;
}
好方法:
用结构体数组储存数据,每个数据有一个等级变量,通过这个变量和sort函数排序,直接将四种等级分开了,省去好多事
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct stu{
char id[10];
int D;int C;
int flag,sum;
}temp,ex[100010];
bool cmp(stu a,stu b){
if(a.flag!=b.flag)return a.flag<b.flag;
else if(a.sum!=b.sum)return a.sum>b.sum;
else if(a.D!=b.D)return a.D>b.D;
else return strcmp(a.id,b.id)<0;
}
int main(){
int N,L,H,local=0;
scanf("%d %d %d",&N,&L,&H);
for(int i=0;i<N;i++){
scanf("%s %d %d",temp.id,&temp.D,&temp.C);
if(temp.D<L||temp.C<L)continue;
strcpy(ex[local].id,temp.id);
ex[local].D=temp.D;
ex[local].C=temp.C;
if(ex[local].D>=H&&ex[local].C>=H)ex[local].flag=1;
else if(ex[local].D>=H&&ex[i].C<H)ex[local].flag=2;
else if(ex[local].D<H&&ex[local].C<H&&ex[local].D>=ex[local].C)ex[local].flag=3;
else ex[local].flag=4;
ex[local].sum=ex[local].D+ex[local].C;
local++;
}
sort(ex,ex+local,cmp);
printf("%d\n",local);
for(int i=0;i<local;i++){
printf("%s %d %d\n",ex[i].id,ex[i].D,ex[i].C);
}
return 0;
}
【PAT】B1015 德才论的更多相关文章
- PAT B1015 德才论 (25 分)
宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人 ...
- PAT B1015德才论
题目描述: 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不 ...
- PAT 1015. 德才论 (25) JAVA
宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子 ...
- PAT 1015. 德才论 (25)
宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子 ...
- PAT 1015 德才论 (25)(代码+思路)
1015 德才论 (25)(25 分)提问 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子, ...
- PAT——1015. 德才论
宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人 ...
- 【算法笔记】B1015 德才论
1015 德才论 (25 分) 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君 ...
- PAT 1015 德才论
https://pintia.cn/problem-sets/994805260223102976/problems/994805307551629312 宋代史学家司马光在<资治通鉴>中 ...
- PAT B1015A1062德才论(25)
题目描述 宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得 ...
随机推荐
- nginx处理cookie跨域
今天在部署公司项目的时候碰到一个问题 项目地址是xxx.xx.xx.122:7480 项目A后台请求地址为xxx.xx.xx.123:8080/data-sso 开始nginx配置是 server { ...
- 微信小程序开发测试
微信小程序 在2017-01-09正式上线,本着跟上时代潮流的精神,写一份教程来看看 微信IDE下载地址为: 微信IDE 在windows下直接 双击 exe安装即可,安装完成后的界面如下: 得到这个 ...
- log4cplus使用(三)-日志重定向
本文讲述的是log4cplus日志输出到qt widget,封装了serverSocket. log4cplus支持用户自定义输出设备,只需要继承自Appender,或者Appender子类, ...
- asp.net core系列 40 Web 应用MVC 介绍与详细示例
一. MVC介绍 MVC架构模式有助于实现关注点分离.视图和控制器均依赖于模型. 但是,模型既不依赖于视图,也不依赖于控制器. 这是分离的一个关键优势. 这种分离允许模型独立于可视化展示进行构建和测试 ...
- Android中广播接收者BroadcastReceiver详解
1. 接收系统的广播步骤 (1) 新建一个类继承BroadcastReceiver 以监听sd卡状态的广播接收者为例 public class SdCardBroadcastReceiver ext ...
- 当你「ping 一下」的时候,你知道它背后的逻辑吗?
我们在遇到网络不通的情况,大家都知道去 ping 一下,看一下网络状况.那你知道「ping」命令后背的逻辑是什么吗?知道它是如何实现的吗? 一.「ping」命令的作用和原理? 简单来说,「ping」是 ...
- Gulp介绍与入门实践
Gulp,一个基于流的构建工具. 这是自己写的一个构建的demo,只是一个纯演示的示例,并没有完成什么项目工作.下面根据这个demo介绍一下Gulp. 上代码: gulpfile.js 'use st ...
- Linux 清理boot分区
今天一登录虚拟机 就被提示boot空间不足 于是赶紧看了下 还有9.2M,刚安装的时候好好的,为什么用了一段时间后就提示空间不足呢? 原因是使用yum update升级内核后 boot分区中就多了 ...
- ThreadPoolExecutor系列三——ThreadPoolExecutor 源码解析
ThreadPoolExecutor 源码解析 本文系作者原创,转载请注明出处:http://www.cnblogs.com/further-further-further/p/7681826.htm ...
- IDEA使用总结
IDEA常用设置 在我们第一眼看见IDEA是这个样子的: 显示工具条 我们要显示工具条!,两个按钮哦 黑色主体 我们要黑色的主题,白色的太low了! 调整字体大小 现在的字体太小了,我要鼠标滑轮+cr ...