USACO Section 1.1 Greedy Gift Givers

题目描述

一组NP(2≤NP≤10)唯一命名的朋友决定交换礼物。这些朋友中的每一个都可能或不可能给任何或所有其他朋友一些钱。同样,每个朋友也许或可能不会从任何一个或所有其他朋友那里收到钱。你在这个问题上的目标是推断出每个人给予的钱比他们收到多少钱。赠送礼物的规则可能与您预期的不同。每个人放弃一定数量的钱,将这笔钱均匀分配给他或者正在给予礼物的所有人中。没有分数的钱可用,所以在2个朋友中,除了3个,对于剩下1个的朋友,每个1个,剩下1个留在提交者的“帐户”中。在任何一群朋友中,有些人比别人更多(或者至少可能有更多的熟人),有些人比其他人有更多的钱。给予一群朋友,其中没有一个姓名长度超过14个字符,团体中的每个人花费的礼物和每个人给予礼物的(子)列表的朋友,确定多少(或较少)组中每个人给予的比他们收到。

重要提示

分级机是使用标准Unix约定的Linux机器:行尾是通常被称为“\ n”的单个字符。 这不同于Windows,它结束了两个字符'\ n'和'\ r'的行。 不要让你的程序被这个困住!

程序名称:gift1

输入格式

第1行:单个整数,NP
行2..NP + 1:每行包含组成员的名称
线NP + 2..end:NP组的线组织如下:
小组的第一行告诉该人的名字将会赠送礼物。
该组的第二行包含两个数字:起始金额(在0..2000范围内)由提供者分配为礼物,然后送达送礼者的人数NGi(0 ≤NGi≤NP-1)。
如果NGi不是零,则下一个NGi行列出了礼物收件人的姓名。

输入 (file gift1.in)
5
dave
laura
owen
vick
amr
dave
200 3
laura
owen
vick
owen
500 1
dave
amr
150 2
vick
owen
laura
0 2
amr
vick
vick
0 0

输出格式

输出是NP行,每个都有一个人的名字,后面跟着一个空白,然后是该人的净收益或损失(final_money_value - initial_money_value)。 这些名称应该按照输入的第2行开始的顺序打印。
所有的礼物都是整数。 每个人给予给予任何钱的每个朋友相同的整数金额,并尽可能多地符合这个约束。 任何没有给予的钱都由提供者保存

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值