A[1080]Graduate Admission 两个cmp比较函数两个struct结构体
A[1080]graduate admission
注意这道题内的cmp写法。
#include <cstdio>
#include <algorithm>
using namespace std;
struct Student {int id,rank;//排名和学生编号int ge, gi, sum;//两科分数和总分int cho[7];//每个考生的志愿学校编号
}stu[40010];struct School{int stunum;//现招生人数int quota;//学校招生额度int stuid[40010];//招生idint lastid;//最后招收的学生编号
}sco[105];bool cmpstu(Student a, Student b) {if (a.sum != b.sum)return a.sum > b.sum;else return a.ge > b.ge;
}bool cmpid(int a,int b) {return stu[a].id < stu[b].id;
}
//注意此处的cmp括号内写法,不是要整个结构体根据某个一个条件进行排序,而是结构体内的一个数组根据某一个条件进行排序。此处int main() {int n, m, k;scanf("%d%d%d", &n, &m, &k);for (int i = 0; i < m; i++) {sco[i].stunum = 0;sco[i].lastid = -1;scanf("%d", &sco[i].quota);}//对结构体Scool进行初始化并且录入各校招收的额度for (int i = 0; i < n; i++) {scanf("%d%d", &stu[i].ge, &stu[i].gi);stu[i].id = i;for (int j = 0; j < k; j++) {scanf("%d", &stu[i].cho[j]);}stu[i].sum = stu[i].ge+stu[i].gi;}//对结构体Student的id cho sum ge gi进行初始化sort(stu, stu + n, cmpstu);//按照成绩进行第一次排序for (int i = 0; i < n; i++) {if (i > 0 && stu[i].sum == stu[i - 1].sum&&stu[i].ge == stu[i - 1].ge)stu[i].rank = stu[i - 1].rank;else stu[i].rank = i;}for (int i = 0; i < n; i++) {for (int j = 0; j < k; j++) {int choice = stu[i].cho[j];//选择的学校的编号int last = sco[choice].lastid;//选择学校的最后招收的学生编号int num = sco[choice].stunum;//志愿学校的现招收人数if (num < sco[choice].quota || (last != -1 && stu[i].rank == stu[last].rank)) {sco[choice].lastid = i;sco[choice].stuid[num] = i;sco[choice].stunum++;break;//一旦被录取直接开始处理下一位同学}//此处记录的i是进行第一次排名后的考生下标}//录取的处理完毕,进行对每个学校录取学生按照id从小到大进行排序}for (int i = 0; i < m; i++) {if (sco[i].stunum > 0) { sort(sco[i].stuid, sco[i].stuid + sco[i].stunum, cmpid);//进行第二次排序for (int j = 0; j<sco[i].stunum; j++) {printf("%d", stu[sco[i].stuid[j]].id);if (j < sco[i].stunum - 1){printf(" ");}}}printf("\n");}return 0;}
A[1080]Graduate Admission 两个cmp比较函数两个struct结构体相关推荐
- 1080 Graduate Admission
1.因为这道题第一次认真想了高考录取的规则,对学生按照先总分再gE的原则进行从高到低排序,排名允许重复.再按照排名高到低对每个学生的每个志愿进行遍历,当一个学生处理完,再进行下一个. 2.由于最后是要 ...
- 1080 Graduate Admission (30 分)
1.模拟 2.结构体排序 3.个顶序列赋排名 #include<bits/stdc++.h> using namespace std; vector<vector<int &g ...
- 关于set的自定义比较函数的使用及结构体的上下二分用法
如果set的类型是个结构体 我们需要定义重载函数 ***set 容器模版需要3个泛型参数,如下: template <class Key,class Compare = less <key ...
- Linux中的两个经典宏定义:获取结构体成员地址,根据成员地址获得结构体地址;Linux中双向链表的经典实现。...
倘若你查看过Linux Kernel的源码,那么你对 offsetof 和 container_of 这两个宏应该不陌生.这两个宏最初是极客写出的,后来在Linux内核中被推广使用. 1. offse ...
- 驱动注册的两种方式(一)——file_operations结构体
使用file_operations结构体进行字符驱动设备的注册/注销: #include <linux/module.h> //module_init() & module_exi ...
- 1080 Graduate Admission (30分)
题目 It is said that in 2011, there are about 100 graduate schools ready to proceed over 40,000 applic ...
- 1080 Graduate Admission (30 分)【难度: 一般 / 知识点: 模拟 排序】
https://pintia.cn/problem-sets/994805342720868352/problems/994805387268571136 先总的排序,再枚举每一个学生,对于每一个学生 ...
- PAT甲级1080 Graduate Admission【模拟】
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805387268571136 题意: 模拟高考志愿录取. 考生根据总 ...
- PAT 1080. Graduate Admission (30) 模拟高考志愿录取规则
再次1A hahah /************************* 题意: 高考选志愿. 每个人有Ge和Gi, 最终分数是Gf. 比较方式是先看Gf,再看Ge 每个人k个志愿. 每个学校有一定 ...
- 用JAVA定义两个结构体_c语言struct结构体的定义和使用
c语言由于不像java,c#,c++等语言有对象,所以就用struct结构体来表示,其实作用是差不多的,下面来快速学习c语言struct结构体的定义和使用,以学生类student来举例,有三种定义方式 ...
最新文章
- 随机森林 java_机器学习weka,java api调用随机森林及保存模型
- C++用数组和链表分别实现Stack
- MongoDB 的 upsert
- 转:Tomcat启动失败 提示Server Tomcat v7.0 Server at localhost failed to start.六种解决方法
- 域账号更改密码之后代理需要重新配置
- Linux一个命令创建多个目录:seq命令
- java成绩前五名的代码_java 如何选出成绩排前5名的学生呢
- Exchange server 2010系列教程之四 如何卸载exchange server 2010
- 软件测试基础知识【归纳】
- 视频专辑:Web Service视频教程
- 获取JQuery UI tabs中被选中的tabs的方法
- oracle rownum的使用
- 实验七matlab数值计算,数学应用软件实验报告---MATLAB的数值计算
- UCSC 基因组浏览器配置详解
- 为什么阿里不推荐使用MySQL分区表?
- CSS3中设置元素转换中心点
- 摩尔斯电码 — 摩尔斯密码
- MATLAB Simulink开发ROS无人车与机器人应用 详细教程
- 【专题5: 硬件设计】 之 【15.RC滤波电路】
- 特殊的一些vi指令(快捷键)
热门文章
- elasticsearch批量数据导入和导出
- sysbench 0.5 oltp测试笔记
- ubuntu下用户的创建、修改
- 逻辑卷、物理卷、卷组
- php7 magento速度优化,7个更快的加载速度的Magento优化快速提示
- java 虚拟机 分析_Java 虚拟机中的运行时数据区分析
- 什么标签用于在表单中构建复选框_以下 ( ) 标签用于在表单中构建复选框 。_IP通信技术答案_学小易找答案...
- dom4j解析xml_JAVADom、Sax解析XML详解
- ajax zlib,jQuery递增地读取Ajax流吗?
- The file is absent or does not have execute permission This file is needed to run this program