PAT甲级1080 Graduate Admission【模拟】
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805387268571136
题意:
模拟高考志愿录取。
考生根据总成绩和高考成绩排名。根据排名往下录取,每个人有k个志愿。
如果他填的学校名额没有满,那么就可以被录取。如果他填的学校名额满了,最后一名的排名和这个人是一样的话,就可以被录取。
思路:
直接模拟。
刚开始居然有一个数据超时了,把排序的cmp里面改成传引用居然就过了。
//#include<bits/stdc++>
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<stdlib.h>
#include<queue>
#include<map>
#include<stack>
#include<set> #define LL long long
#define ull unsigned long long
#define inf 0x3f3f3f3f using namespace std; int n, m, k;
const int maxn = 4e4 + ;
struct student{
int ge, gi;
int id;
int gfinal;
vector<int>apply;
}stu[maxn]; bool cmp(student &a, student &b)
{
if(a.gfinal == b.gfinal){
return a.ge > b.ge;
}
else return a.gfinal > b.gfinal;
} struct school{
int quota;
vector<student>addmit;
}sch[]; bool cmpans(student &a, student &b)
{
return a.id < b.id;
} int main()
{
scanf("%d%d%d", &n, &m, &k);
for(int i = ; i < m; i++){
scanf("%d", &sch[i].quota);
}
for(int i = ; i < n; i++){
stu[i].id = i;
scanf("%d%d%", &stu[i].ge, &stu[i].gi);
stu[i].gfinal = (stu[i].ge + stu[i].gi) / ;
for(int j = ; j < k; j++){
int s;
scanf("%d", &s);
stu[i].apply.push_back(s);
}
}
sort(stu, stu + n, cmp); for(int i = ; i < n; i++){
for(int j = ; j < k; j++){
int s = stu[i].apply[j];
if(sch[s].quota){
sch[s].addmit.push_back(stu[i]);
sch[s].quota--;
break;
}
else{
if(sch[s].addmit.size()){
student lastone = sch[s].addmit.back();
if(lastone.gfinal == stu[i].gfinal && lastone.ge == stu[i].ge){
sch[s].addmit.push_back(stu[i]);
break;
}
}
}
}
} for(int i = ; i < m; i++){
if(sch[i].addmit.size()){
sort(sch[i].addmit.begin(), sch[i].addmit.end(), cmpans);
printf("%d", sch[i].addmit[].id);
for(int j = ; j < sch[i].addmit.size(); j++){
printf(" %d", sch[i].addmit[j].id);
}
}
printf("\n");
} return ;
}
PAT甲级1080 Graduate Admission【模拟】的更多相关文章
- PAT 甲级 1080 Graduate Admission (30 分) (简单,结构体排序模拟)
1080 Graduate Admission (30 分) It is said that in 2011, there are about 100 graduate schools ready ...
- pat 甲级 1080. Graduate Admission (30)
1080. Graduate Admission (30) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue It ...
- PAT甲级——A1080 Graduate Admission
It is said that in 2011, there are about 100 graduate schools ready to proceed over 40,000 applicati ...
- 1080 Graduate Admission——PAT甲级真题
1080 Graduate Admission--PAT甲级练习题 It is said that in 2013, there were about 100 graduate schools rea ...
- PAT 1080 Graduate Admission[排序][难]
1080 Graduate Admission(30 分) It is said that in 2011, there are about 100 graduate schools ready to ...
- 【PAT甲级】1080 Graduate Admission (30 分)
题意: 输入三个正整数N,M,K(N<=40000,M<=100,K<=5)分别表示学生人数,可供报考学校总数,学生可填志愿总数.接着输入一行M个正整数表示从0到M-1每所学校招生人 ...
- PAT 1080. Graduate Admission (30)
It is said that in 2013, there were about 100 graduate schools ready to proceed over 40,000 applicat ...
- PAT 1080. Graduate Admission
It is said that in 2013, there were about 100 graduate schools ready to proceed over 40,000 applicat ...
- PAT (Advanced Level) 1080. Graduate Admission (30)
简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...
随机推荐
- <climits>头文件定义的符号常量
<climits>头文件定义的符号常量 CHAR_MIN char的最小值 SCHAR_MAX signed char 最大值 SCHAR_MIN signed char 最小值 ...
- 硬盘SMART检测参数详解[转]
一.SMART概述 要说Linux用户最不愿意看到的事情,莫过于在毫无警告的情况下发现硬盘崩溃了.诸如RAID的备份和存储技术可以在任何时候帮用户恢复数据,但为预防硬件崩溃造成数据丢失所 ...
- springboot-admin自定义事件通知
springboot-admin组建已经提供了很多开箱即用的通知器(例如邮件),但在有些业务场景下我们需要做一些企业内部的通知渠道,这就需要我们来自定义通知器. 实现其实很简单,只需要往spring注 ...
- 【转】33 个 2017 年必须了解的 iOS 开源库
1.IGListKit,作者是Instagram Engineering Instagram 程序员做的,IGListKit 是数据驱动的 UICollectionView 框架,为了构建快速和可扩展 ...
- 基于java实现的简单区块链
技术:maven3.0.5 + jdk1.8 概述 区块链是分布式数据存储.点对点传输.共识机制.加密算法等计算机技术的新型应用模式.所谓共识机制是区块链系统中实现不同节点之间建立信任.获取权益的 ...
- webview调起浏览器
调起浏览器 url = "intent://" + url +"#Intent;scheme=http;action=android.intent.action.VIEW ...
- [k8s] flexvolume workflow
- Oracle中判断字段是否为数字
在我们平常的开发中可能会遇到这样的问题,就是判断某一列是否全部由数字组成,我们都知道oracle并没有给我们提供这样一个现成的函数,那么根据我的经验我总结了两个行之有效的方法(列名:column,表名 ...
- System.Net.HttpWebRequest.GetResponse() 远程服务器
WebException 服务器状态码错误,比如500服务器内部错误 现象 我们编码实现请求一个页面时,请求的代码类似如下代码: HttpWebRequest req = (HttpWebReques ...
- Swagger Annotation 详解
在软件开发行业,管理文档是件头疼的事.不是文档难于撰写,而是文档难于维护,因为需求与代码会经常变动,尤其在采用敏捷软件开发模式的系统中.好的工具能够提高团队沟通效率,保证系统质量以及缩短项目的交付周期 ...