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 ...
随机推荐
- 【ThinkPHP框架学习 】(2) --- 后台管理系统如何用iframe点击左边右边局部刷新
如题: 在写后台管理系统时,需要实现后台界面的局部动态刷新. 左边的导航栏使用a标签进行设置,通过href和target属性的配合,就可以将iframe中的子页实现动态 ...
- 用户需求与NABCD分析
用户需求与NABCD分析 目录 项目简介 用户需求分析 调研途径 问卷情况说明 问卷反馈与分析 NABCD分析 Need 需求 Approach 途径 Benefit 好处 Competitors 竞 ...
- [转载] 布隆过滤器(Bloom Filter)详解
转载自http://www.cnblogs.com/haippy/archive/2012/07/13/2590351.html 布隆过滤器[1](Bloom Filter)是由布隆(Burton ...
- 原生JS—实现图片循环切换的两种方法
今天我们主要讲讲如何使用原生JS实现图片的循环切换的方法.多余的话我们就不多说了,我们一个一个开始讲吧. 1 原生JS实现图片循环切换 -- 方法一 在上栗子之前我们先简单介绍一下所用的一些知识点. ...
- python操作Mysql基础
import pymysql #不修改数据 def no_data_change(): db=pymysql.connect('host','user','pw','db_name') #host,u ...
- 非关系型数据库redis-java基本操作
概述 redis是一个key-value的nosql数据库(非关系型数据库).支持存储的value类型包括string(字符串).list(链表).set(集合).zset(sorted set -- ...
- POJ1082食物链
加权并查集入门习题. 传送门http://poj.org/problem?id=1182 下面来记录一下做法: 并查集的作用是询问两个对象时候在同一集合以及将两个非空不相交集合合并. 本题涉及两点之间 ...
- linux服务器使用yum安装nginx
一,安装nginx和php-fpm yum install nginx php-fpm 二, 找到nginx.conf find / -name nginx.conf 三,添加解析php配置 在ser ...
- cardview和Palette,ActionBar颜色随图改变
CardView是一个控件,Palette是取色工具(工具类),本文会对他们进行比较细致的介绍,相信机制的各位看完一定轻而易举地实现ActionBar随图改变的特效. 首先看一下效果图: Gradle ...
- JAVAFX-3 开发应用
理解布局 布局容器(Layoutcontainer)或面板(Pane)允许对JavaFX应用程序场景图中的UI控件进行灵活.动态的排布.JavaFX Layout API包括下列容器类: ● Bord ...