UVA - 10249 The Grand Dinner
Description

Problem D
The Grand Dinner
Input: standard input
Output: standard output
Time Limit: 15 seconds
Memory Limit: 32 MB
Each team participating in this years ACM World Finals contest is expected to join the grand dinner to be arranged after the prize giving ceremony ends. In order to maximize the interaction among the members of different teams, it is expected
that no two members of the same team sit at the same table.
Now, given the number of members in each team (including contestants, coaches, reserves, guests etc.) and the seating capacity of each available table, you are to determine whether it is possible for the teams to sit as described in the previous paragraph.
If such an arrangement is possible you must also output one possible seating arrangement. If there are multiple possible arrangements, any one is acceptable.
Input
The input file may contain multiple test cases. The first line of each test case contains two integers
M (1 £M£ 70) and N (1 £N£ 50) denoting the number of teams and the number of tables respectively. The second line of the test case contains
M integers where the i-th (1 £i£M) integer
mi (1 £mi£ 100) indicates the number of members of team
i. The third line contains N integers where the
j-th (1 £j£N) integer nj (2 £nj£ 100) indicates the seating capacity of table
j.
A test case containing two zeros for M and N terminates the input.
Output
For each test case in the input print a line containing either 1 or
0 depending on whether or not there exists a valid seating arrangement of the team members. In case of a successful arrangement print
M additional lines where the i-th (1 £i£ M) of these lines contains a table number (an integer from
1 to N) for each of the members of team
i.
Sample Input
4 5
4 5 3 5
3 5 2 6 4
4 5
4 5 3 5
3 5 2 6 3
0 0
Sample Output
1
1 2 4 5
1 2 3 4 5
2 4 5
1 2 3 4 5
0
题意:有m个队伍,n个桌子,要求每一个队伍里的人不能出如今同一个桌子上,问是否有这样的可能
思路:贪心的每次将桌子能坐的人排序,从大的往小的坐
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 110; struct Node {
int id, num;
bool operator <(const Node &a) const {
return num > a.num;
}
} a[maxn], b[maxn]; struct team {
int index[maxn];
} res[maxn];
int n, m;
int tmp[maxn]; int main() { while (scanf("%d%d", &m, &n) != EOF && n+m) {
int flag = 1;
for (int i = 1; i <= m; i++) {
scanf("%d", &a[i].num);
tmp[i] = a[i].num;
a[i].id = i;
if (a[i].num > n)
flag = 0;
}
for (int i = 1; i <= n; i++) {
scanf("%d", &b[i].num);
b[i].id = i;
}
for (int i = 1; i <= m && flag; i++) {
sort(b+1, b+1+n);
for (int j = 1; j <= a[i].num; j++) {
if (b[j].num > 0) {
res[a[i].id].index[j] = b[j].id;
b[j].num--;
}
else {
flag = 0;
break;
}
}
}
if (!flag) {
printf("0\n");
continue;
}
printf("1\n");
for (int i = 1; i <= m; i++) {
sort(res[i].index+1, res[i].index+1+tmp[i]);
for (int j = 1; j <= tmp[i]; j++) {
if (j == 1)
printf("%d", res[i].index[j]);
else printf(" %d", res[i].index[j]);
}
printf("\n");
}
}
return 0;
}
UVA - 10249 The Grand Dinner的更多相关文章
- (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO
http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...
- ACM训练计划step 1 [非原创]
(Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成 ...
- 算法竞赛入门经典+挑战编程+USACO
下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...
- UVA 10217 A Dinner with Schwarzenegger!!!---数学
题目链接: https://cn.vjudge.net/problem/UVA-10217 题目大意: 有若干人排队买电影票,如果某个人的生日与排在他前面的某个人的生日相同,那么他讲中奖.中奖的机会只 ...
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...
- UVA计数方法练习[3]
UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...
随机推荐
- Virtual
Virtual 作用: 允许在派生类中重新定义与基类同名函数并且可以通过其类的指针或引用来访问基类何派生类的同名函数. 1. 概述简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少 ...
- 10.javaweb核心标签库详解
一.JSTL简介及在项目中安装配置 1, 简介 使用JSTL标签的目的就是不希望jsp中出现java逻辑代码 分类 2, JSTL的安装配置 首先将jar包中的各个标签库配置文件拷贝到项目WEB- ...
- java删除数组中的第n个数
package test; import java.util.Scanner; public class Deletearr { public static void deletearr(){ Sca ...
- kickstart 实现批量安装centos7.x系统
1.1 安装系统的方法 l 光盘(ISO文件,光盘的镜像文件)===>>每一台物理机都得给一个光驱,如果用外置光驱的话,是不是每台机器都需要插一下 l U盘:ISO镜像刻录到U盘==& ...
- [转载] Jupiter代码审查工具使用参考
转载自http://blog.csdn.net/jemlee2002/article/details/5715355 一. Jupiter 是什么? 这里的 Jupiter 是一个开源的代 ...
- MySQL索引与Index Condition Pushdown
实际上,这个页面所讲述的是在MariaDB 5.3.3(MySQL是在5.6)开始引入的一种叫做Index Condition Pushdown(以下简称ICP)的查询优化方式.由于本身不是一个层面的 ...
- html5知识点:DOM编程
DOM是Document Object Model的缩写,中文名称是文档对象模型. DOM是处理HTML页面的标准编程接口,DOM可被JavaScript用来读取.改变HTML的内容和结构. 前端三大 ...
- riot.js教程【五】标签嵌套、命名元素、事件、标签条件
前文回顾 riot.js教程[四]Mixins.HTML内嵌表达式 riot.js教程[三]访问DOM元素.使用jquery.mount输入参数.riotjs标签的生命周期: riot.js教程[二] ...
- AI 新技术革命将如何重塑就业和全球化格局?深度解读 UN 报告(上篇)
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 张钦坤 腾讯研究院秘书长蔡雄山 腾讯研究院法律研究中心副主任祝林华 腾讯研究院法律研究中心助理研究员曹建峰 腾讯研究院法律研究中心高级研究员 ...
- 《Metasploit魔鬼训练营》第三章
p85 使用nmap探测目标主机的操作系统版本那里有问题,我探测不了NAT服务器的! msf > nmap -sT 10.10.10.254 [*] exec: nmap -sT 10.10.1 ...