题目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【模拟】的更多相关文章

  1. PAT 甲级 1080 Graduate Admission (30 分) (简单,结构体排序模拟)

    1080 Graduate Admission (30 分)   It is said that in 2011, there are about 100 graduate schools ready ...

  2. pat 甲级 1080. Graduate Admission (30)

    1080. Graduate Admission (30) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue It ...

  3. PAT甲级——A1080 Graduate Admission

    It is said that in 2011, there are about 100 graduate schools ready to proceed over 40,000 applicati ...

  4. 1080 Graduate Admission——PAT甲级真题

    1080 Graduate Admission--PAT甲级练习题 It is said that in 2013, there were about 100 graduate schools rea ...

  5. PAT 1080 Graduate Admission[排序][难]

    1080 Graduate Admission(30 分) It is said that in 2011, there are about 100 graduate schools ready to ...

  6. 【PAT甲级】1080 Graduate Admission (30 分)

    题意: 输入三个正整数N,M,K(N<=40000,M<=100,K<=5)分别表示学生人数,可供报考学校总数,学生可填志愿总数.接着输入一行M个正整数表示从0到M-1每所学校招生人 ...

  7. PAT 1080. Graduate Admission (30)

    It is said that in 2013, there were about 100 graduate schools ready to proceed over 40,000 applicat ...

  8. PAT 1080. Graduate Admission

    It is said that in 2013, there were about 100 graduate schools ready to proceed over 40,000 applicat ...

  9. PAT (Advanced Level) 1080. Graduate Admission (30)

    简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

随机推荐

  1. &lt;climits&gt;头文件定义的符号常量

    <climits>头文件定义的符号常量 CHAR_MIN  char的最小值 SCHAR_MAX  signed char 最大值 SCHAR_MIN   signed char 最小值 ...

  2. 硬盘SMART检测参数详解[转]

    一.SMART概述        要说Linux用户最不愿意看到的事情,莫过于在毫无警告的情况下发现硬盘崩溃了.诸如RAID的备份和存储技术可以在任何时候帮用户恢复数据,但为预防硬件崩溃造成数据丢失所 ...

  3. springboot-admin自定义事件通知

    springboot-admin组建已经提供了很多开箱即用的通知器(例如邮件),但在有些业务场景下我们需要做一些企业内部的通知渠道,这就需要我们来自定义通知器. 实现其实很简单,只需要往spring注 ...

  4. 【转】33 个 2017 年必须了解的 iOS 开源库

    1.IGListKit,作者是Instagram Engineering Instagram 程序员做的,IGListKit 是数据驱动的 UICollectionView 框架,为了构建快速和可扩展 ...

  5. 基于java实现的简单区块链

    技术:maven3.0.5 + jdk1.8   概述 区块链是分布式数据存储.点对点传输.共识机制.加密算法等计算机技术的新型应用模式.所谓共识机制是区块链系统中实现不同节点之间建立信任.获取权益的 ...

  6. webview调起浏览器

    调起浏览器 url = "intent://" + url +"#Intent;scheme=http;action=android.intent.action.VIEW ...

  7. [k8s] flexvolume workflow

  8. Oracle中判断字段是否为数字

    在我们平常的开发中可能会遇到这样的问题,就是判断某一列是否全部由数字组成,我们都知道oracle并没有给我们提供这样一个现成的函数,那么根据我的经验我总结了两个行之有效的方法(列名:column,表名 ...

  9. System.Net.HttpWebRequest.GetResponse() 远程服务器

    WebException 服务器状态码错误,比如500服务器内部错误 现象 我们编码实现请求一个页面时,请求的代码类似如下代码: HttpWebRequest req = (HttpWebReques ...

  10. Swagger Annotation 详解

    在软件开发行业,管理文档是件头疼的事.不是文档难于撰写,而是文档难于维护,因为需求与代码会经常变动,尤其在采用敏捷软件开发模式的系统中.好的工具能够提高团队沟通效率,保证系统质量以及缩短项目的交付周期 ...