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 year’s 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的更多相关文章

  1. (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

    http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...

  2. ACM训练计划step 1 [非原创]

    (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成 ...

  3. 算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  4. UVA 10217 A Dinner with Schwarzenegger!!!---数学

    题目链接: https://cn.vjudge.net/problem/UVA-10217 题目大意: 有若干人排队买电影票,如果某个人的生日与排在他前面的某个人的生日相同,那么他讲中奖.中奖的机会只 ...

  5. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  6. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  7. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

  8. UVA&&POJ离散概率与数学期望入门练习[4]

    POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...

  9. UVA计数方法练习[3]

    UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...

随机推荐

  1. C#之可选参数和命名参数

    设计方法的参数是,可以将部分参数和全部参数分配默认值,然后调用这些方法的时候可以选择不提供部分实参,使用参数定义的默认值,另外,还可以在调用方法的时候通过指定参数名称来传递实参. 例如: public ...

  2. threejs 组成的3d管道,寻最短路径问题

    threejs 里面的3d管道的每个节点ID是唯一的,且对应x,y,z坐标.那么当需要从A点到B点的时候,可能出现有多条路径可走,此时便需要求出最短行走路径,因此用到一个寻路径算法.我们将问题简化如下 ...

  3. C#链接数据库增删改查的例子

    以users表为例,有三个字段,自增长的编号id,int类型:名称name,nvarchar类型,密码pwd,nvarchar类型首先在vs2005中引入using System.Data.SqlCl ...

  4. 两个Xml转换为DataSet方法(C#)

    ///通过传入的特定XML字符串,通过 ReadXml函数读取到DataSet中.protected static DataSet GetDataSetByXml(string xmlData){   ...

  5. Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...

  6. LKD: Chapter 7 Interrupts and Interrupt Handlers

    Recently I realized my English is still far from good. So in order to improve my English, I must not ...

  7. Nginx 搭建图片服务器

    Nginx 搭建图片服务器 本章内容通过Nginx 和 FTP 搭建图片服务器.在学习本章内容前,请确保您的Linux 系统已经安装了Nginx和Vsftpd. Nginx 安装:http://www ...

  8. C语言之循环计数

    #include<stdio.h>int main(){int num,count=0,i=0;scanf("%d",&num);num/=10;count++ ...

  9. Dubbo源码学习--服务发布(ServiceBean、ServiceConfig)

    前面讲过Dubbo SPI拓展机制,通过ExtensionLoader实现可插拔加载拓展,本节将接着分析Dubbo的服务发布过程. 以源码中dubbo-demo模块作为切入口一步步走进Dubbo源码. ...

  10. 【原创】python实现清理本地缓存垃圾

    #coding=utf-8 import os import glob try: #利用glob模块定位需要清理垃圾的模糊路径 File_1 = glob.glob("C:\Windows\ ...