地址:http://ac.jobdu.com/problem.php?pid=1005

题意:n个学生,m个学校,每个学校q[i]个名额。主旨是学生选学校。每个学生有k个选择,选择优先权是从高到低,每个学生有两个分数ge和gi,如果(ge+gi)/2比较高,则排名    高,如果相等则比较ge,如果仍然相等,则排名相等。学生按照排名先后选择学校,轮到该学生选择学校时,如果当前选择的学校名额已满,就看选择的下一个学校,以此类    推,如果所有学校都满,则无学校可选。特殊情况:当同等排名的学生且选到相同学校,如果该学校名额不够分配给同等排名的学生,会破格录取这些学生。

mark:该题用C++STL的set很方便的解决问题。set的有关说明http://www.cplusplus.com/reference/set/set/

代码:

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <vector>using namespace std;typedef long long LL;typedef struct
{int num;int ge,gi;int pre[5];
}ss;int n,m,k;
int q[110];
ss s[40010];
set<int> vv[100];
set<int>::iterator it;
bool vst[40010];int cmp(const void *a, const void *b)
{ss *aa = (ss *)a, *bb = (ss *)b;if(aa->ge+aa->gi == bb->ge+bb->gi){if(aa->ge == bb->ge) return aa->num - bb->num;return bb->ge - aa->ge;}return bb->ge+bb->gi-aa->ge-aa->gi;
}int main(int argc, char **argv)
{int i,j;while(cin >> n >> m >> k){for(i = 0; i < m; i++){vv[i].clear();cin >> q[i];}for(i = 0; i < n; i++){s[i].num = i;cin >> s[i].ge >> s[i].gi;for(j = 0; j < k; j++)cin >> s[i].pre[j];}qsort(s, n, sizeof(ss), cmp);memset(vst, 0, sizeof(vst));for(i = 0; i < n; i++){if(vst[i]) continue;for(j = 0; j < k; j++){if(!q[s[i].pre[j]]) continue;vv[s[i].pre[j]].insert(s[i].num);if(q[s[i].pre[j]] > 1){q[s[i].pre[j]]--;break;}int p = i+1;while(s[i].ge == s[p].ge && s[i].ge+s[i].gi == s[p].ge+s[p].gi){for(int x = 0; x < k; x++){if(!q[s[p].pre[x]]) continue;if(s[p].pre[x] == s[i].pre[j]){vv[s[i].pre[j]].insert(s[p].num);vst[p] = 1;}else break;}p++;}q[s[i].pre[j]]--;break;}}for(i = 0; i < m; i++){j = 0;for(it = vv[i].begin(); it != vv[i].end(); it++){if(j++) cout << ' ';cout << *it;}cout << endl;}}return 0;
}

转载于:https://www.cnblogs.com/andre0506/archive/2013/05/27/3102841.html

Jobdu 1005相关推荐

  1. 题目1005:Graduate Admission(结构体排序)

    问题来源 http://ac.jobdu.com/problem.php?pid=1005 问题描述 这道题理解题意有些麻烦,多看几遍先理解题意再说.每个学生有自己的三个成绩,一个编号,以及一个志愿列 ...

  2. 【HDU】1005 Number Sequence (有点可爱)

    http://acm.hdu.edu.cn/showproblem.php?pid=1005 A number sequence is defined as follows: f(1) = 1, f( ...

  3. 【ACM】杭电OJ 1005

     题目链接:杭电OJ 1005 超时代码如下(而且开辟的数组空间大小不够): #include <stdio.h> int m[100000]; int f(int n,int a,int ...

  4. mysql hy000 1005,mysql – ERROR 1005(HY000):无法创建表(errno:150)

    当我尝试在 mysql中创建一个表时,我收到一个错误. 任何提示解决吗? create table stock_in( ind int not null auto_increment, itemcod ...

  5. Codevs 1005 生日礼物

    1005 生日礼物  时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 9月12日是小松的朋友小寒的生日.小松知道小寒特别喜欢蝴蝶,所 ...

  6. 1005. 继续(3n+1)猜想 (25) (ZJUPAT 数学)

    主题链接:http://pat.zju.edu.cn/contests/pat-b-practise/1005 卡拉兹(Callatz)猜想已经在1001中给出了描写叙述.在这个题目里.情况略微有些复 ...

  7. 使用Navicat创建数据库,外键出现错误ERROR 1005: Can't create table (errno: 121)

    ERROR 1005: Can't create table (errno: 121) 意思是: 1.表名重复 2.以该名字命名的表之前创建过后来删除了,但是对应的.frm文件还留在磁盘上 3.主键名 ...

  8. Jobdu MM分水果

    题目1420:Jobdu MM分水果 题目描述: Jobdu团队有俩PPMM,这俩MM干啥都想一样.一天,富强公司给团队赞助了一批水果,胡老板就把水果派发给了这俩MM,由她们自行分配.每个水果都有一个 ...

  9. HDU 1005 Number Sequence

    [题目]                                                   Number Sequence Time Limit: 2000/1000 MS (Jav ...

  10. PAT甲级1005 Spell It Right :[C++题解]字符串处理

    文章目录 题目分析 题目链接 题目分析 ac代码 #include<bits/stdc++.h> using namespace std;const int N =110;string n ...

最新文章

  1. [svc]ext4文件删除访问原理
  2. 【我的项目经验】——Visual Studio 插件
  3. bzoj2002Bounce 弹飞绵羊
  4. ASP.NET 网页之间传递值
  5. wince下获取mac地址的简单方法!
  6. 非接触式IC智能(射频)卡
  7. win7为什么打开桌面上的计算机很卡很慢,如何解决win7系统电脑反应慢
  8. C# Linq to sql 实现 group by 统计多字段 返回多字段
  9. 19【推荐系统10】从POLY2、FM到FFM——自动特征交叉的解决方案
  10. 2017年的那些事儿
  11. 了解H.264(AVC)的你,知不知道什么是SVC?
  12. 京东商品类目查询接口
  13. iOS 手动实现KVO / iOS KVO底层原理
  14. vue 找回密码_密码系统
  15. Aop简介 Aop术语 SpringAOP
  16. day03--面向对象--类的继承
  17. C语言_自定义数据类型
  18. 固态硬盘开卡维修教程,MAP1202、IG5236、SM2259XT2等主控均适用
  19. 淘宝开店指南——店铺设置篇
  20. ZStack云平台物理网络配置

热门文章

  1. C++ GUID和string转化函数【转载】
  2. 并不对劲的AC自动机
  3. JS实现60s倒计时(亲测有效),及span标签如何使用和禁用onclick事件
  4. 企业常用的站内收索、QQ群、在线客服
  5. codeforces 711A A. Bus to Udayland(水题)
  6. QT修改应用程序图标
  7. FFT(快速傅里叶变换):UVAoj 12298 - Super Poker II
  8. 三点坐标求三角形的面积
  9. 每当Xcode升级之后,都会导致原有的Xcode插件不能使用,解决办法
  10. FORM开发实现动态LOV