题目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. 分析轮子(七)- RandomAccess.java

    1:还是先上一个类的继承关系比较图吧! 2:看一下 RandomAccess.java 的源码,空空如也,什么都没有,那她有什么用处呢? /** * Marker interface used by ...

  2. Intellij IDEA配置PHP开发环境

    Intellij IDEA是一款非常强大的编译器,能很好地支持JavaHTML CSS等.当然,加入PHP语言也是小菜一碟~ 环境: Windows 7.Intellij IDEA 2016.2.5. ...

  3. aspx页面,取得Excel某列不同类型的数据为空

    红色部分需要加上, string connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source ...

  4. 给页面点击链接加了转圈圈和解决遇到的bug

    今天遇到一个问题,之前给整个网站上的链接加了loading,今天遇到在ios的chrome和safari下点击进入新页面然后点击浏览器的返回按钮,loading还在,并且一直存在,最后网上搜到了解决方 ...

  5. U-BOOT2016.05 配置内存大小

    bootargs 里面有一个 mem 的参数,将这个配置 512M 便是将内存配置为 512M

  6. 大数据:Hive - ORC 文件存储格式

    一.ORC File文件结构 ORC的全称是(Optimized Row Columnar),ORC文件格式是一种Hadoop生态圈中的列式存储格式,它的产生早在2013年初,最初产生自Apache ...

  7. hdoj:2071

    Max Num Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  8. DTO转DOMAIN动态转换类。

    package dtotransfer.util; import dtotransfer.annotation.DomainField; import java.lang.annotation.Ann ...

  9. CMakeLists

    #cmake最低版本需求,不加入此行会受到警告信息CMAKE_MINIMUM_REQUIRED(VERSION 2.6)PROJECT(HELLO) #项目名称#把当前目录(.)下所有源代码文件和头文 ...

  10. oracle表查询优化

    ORACLE有个高速缓冲的概念,这个高速缓冲就是存放执行过的SQL语句,那oracle在执行sql语句的时候要做很多工作,例如解析sql语句,估算索引利用率,绑定变量,读取数据块等等这些操作.假设高速 ...