zoukankan      html  css  js  c++  java
  • PAT甲级1080 Graduate Admission【模拟】

    题目https://pintia.cn/problem-sets/994805342720868352/problems/994805387268571136

    题意:

    模拟高考志愿录取。

    考生根据总成绩和高考成绩排名。根据排名往下录取,每个人有k个志愿。

    如果他填的学校名额没有满,那么就可以被录取。如果他填的学校名额满了,最后一名的排名和这个人是一样的话,就可以被录取。

    思路:

    直接模拟。

    刚开始居然有一个数据超时了,把排序的cmp里面改成传引用居然就过了。

     1 //#include<bits/stdc++>
     2 #include<stdio.h>
     3 #include<iostream>
     4 #include<algorithm>
     5 #include<cstring>
     6 #include<stdlib.h>
     7 #include<queue> 
     8 #include<map>
     9 #include<stack>
    10 #include<set>
    11 
    12 #define LL long long
    13 #define ull unsigned long long
    14 #define inf 0x3f3f3f3f 
    15 
    16 using namespace std;
    17 
    18 int n, m, k;
    19 const int maxn = 4e4 + 5;
    20 struct student{
    21     int ge, gi;
    22     int id; 
    23     int gfinal;
    24     vector<int>apply;
    25 }stu[maxn];
    26 
    27 bool cmp(student &a, student &b)
    28 {
    29     if(a.gfinal == b.gfinal){
    30         return a.ge > b.ge;
    31     }
    32     else return a.gfinal > b.gfinal;
    33 }
    34 
    35 struct school{
    36     int quota;
    37     vector<student>addmit;
    38 }sch[105]; 
    39 
    40 bool cmpans(student &a, student &b)
    41 {
    42     return a.id < b.id;
    43 }
    44 
    45 
    46 int main()
    47 {
    48     scanf("%d%d%d", &n, &m, &k);
    49     for(int i = 0; i < m; i++){
    50         scanf("%d", &sch[i].quota);
    51     }
    52     for(int i = 0; i < n; i++){
    53         stu[i].id = i;
    54         scanf("%d%d%", &stu[i].ge, &stu[i].gi);
    55         stu[i].gfinal = (stu[i].ge + stu[i].gi) / 2;
    56         for(int j = 0; j < k; j++){
    57             int s;
    58             scanf("%d", &s);
    59             stu[i].apply.push_back(s);
    60         }
    61     }
    62     sort(stu, stu + n, cmp);
    63     
    64     for(int i = 0; i < n; i++){
    65         for(int j = 0; j < k; j++){
    66             int s = stu[i].apply[j];
    67             if(sch[s].quota){
    68                 sch[s].addmit.push_back(stu[i]);
    69                 sch[s].quota--;
    70                 break;
    71             }
    72             else{
    73                 if(sch[s].addmit.size()){
    74                     student lastone = sch[s].addmit.back();
    75                     if(lastone.gfinal == stu[i].gfinal && lastone.ge == stu[i].ge){
    76                         sch[s].addmit.push_back(stu[i]);
    77                         break;
    78                     }
    79                 }
    80             }
    81         }
    82     }
    83     
    84     for(int i = 0; i < m; i++){
    85         if(sch[i].addmit.size()){
    86             sort(sch[i].addmit.begin(), sch[i].addmit.end(), cmpans);
    87             printf("%d", sch[i].addmit[0].id);
    88             for(int j = 1; j < sch[i].addmit.size(); j++){
    89                 printf(" %d", sch[i].addmit[j].id);
    90             }    
    91         }
    92         printf("
    ");
    93     }
    94     
    95     
    96     return 0;    
    97 } 
  • 相关阅读:
    使用 asp.net mvc和 jQuery UI 控件包
    ServiceStack.Redis 使用教程
    HTC T8878刷机手册
    Entity Framework CodeFirst 文章汇集
    2011年Mono发展历程
    日志管理实用程序LogExpert
    使用 NuGet 管理项目库
    WCF 4.0路由服务Routing Service
    精进不休 .NET 4.0 (1) asp.net 4.0 新特性之web.config的改进, ViewStateMode, ClientIDMode, EnablePersistedSelection, 控件的其它一些改进
    精进不休 .NET 4.0 (7) ADO.NET Entity Framework 4.0 新特性
  • 原文地址:https://www.cnblogs.com/wyboooo/p/10477352.html
Copyright © 2011-2022 走看看