Greedy Gift Givers 贪婪的送礼者 USACO 模拟
1002: 1.1.2 Greedy Gift Givers 贪婪的送礼者
时间限制: 1 Sec 内存限制: 128 MB
提交: 9 解决: 9
[提交] [状态] [讨论版] [命题人:外部导入]
题目描述
1.1.2 Greedy Gift Givers 贪婪的送礼者
(gift1.pas/c/cpp)
题目描述
对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少。在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人。然而,在任何一群朋友中,有些人将送出较多的礼物(可能是因为有较多的朋友),有些人有准备了较多的钱。给出一群朋友,没有人的名字会长于
14 字符,给出每个人将花在送礼上的钱,和将收到他的礼物的人的列表,请确定每个人收到的比送出的钱多的数目。
输入格式(gift1.in)
第 1 行: 人数NP,2<= NP<=10
,
第 2 行 到 第NP+1 行:这NP个在组里人的名字 一个名字一行
,
第NP+2到最后:
,
这里的I段内容是这样组织的:
,
第一行是将会送出礼物人的名字。
,
第二行包含二个数字: 第一个是原有的钱的数目(在0到2000的范围里),第二个 NGi 是将收到这个人礼物的人的个数 如果 NGi 是非零的, 在下面 NGi 行列出礼物的接受者的名字,一个名字一行。
,
输出格式(gift1.out)
输出 NP 行
每行是一个的名字加上空格再加上收到的比送出的钱多的数目。
对于每一个人,他名字的打印顺序应和他在输入的2到NP+1行中输入的顺序相同。所有的送礼的钱都是整数。
每个人把相同数目的钱给每位要接受礼物的朋友,而且尽可能多给,不能给出的钱由送礼者本人持有。
重要提示
评测程序是基于UNIX的LINUX系统:换行符只是一个"\n",这与WINDOWS下换行符有两个字符" \n与\r"是不同的。
不要让你的程序踏入这个陷阱!
样例输入
- 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
样例输出
- dave 302
- laura 66
- owen -359
- vick 141
- amr -150
提示

来源/分类
- #include<bits/stdc++.h>
- using namespace std;
- struct people{
- string name;
- int MoneyFirst;//初始钱数
- int Givenum;//送给多少人
- int Money;//手中的钱数 会改变的
- string GivingPeople[];
- int everyonemoney;//分给每个人的钱数
- }a[];
- map<string,int> mp;
- int main()
- {
- int n;
- cin>>n;
- for(int i=;i<=n;i++)
- {
- cin>>a[i].name;
- mp[a[i].name]=i;//map大法 记录下标
- }
- for(int i=;i<=n;i++)
- {
- string s;
- cin>>s;
- int index=mp[s];//找到下标
- cin>>a[index].MoneyFirst>>a[index].Givenum;
- if(a[index].Givenum==)//特判 不然会出bug
- a[index].everyonemoney=;
- else
- a[index].everyonemoney=a[index].MoneyFirst/a[index].Givenum;//记录一下每个人可以分到多少钱
- a[index].Money=-a[index].MoneyFirst;//初始化真开心呢
- for(int j=;j<=a[index].Givenum;j++)
- cin>>a[index].GivingPeople[j];
- }
- for(int i=;i<=n;i++){
- if(a[i].everyonemoney!=)
- a[i].Money+=a[i].MoneyFirst%(a[i].everyonemoney*a[i].Givenum);//统计一下手里头还剩多少钱
- for(int j=;j<=a[i].Givenum;j++){
- int index=mp[a[i].GivingPeople[j]];
- a[index].Money+=a[i].everyonemoney;
- }
- }
- for(int i=;i<=n;i++)
- cout<<a[i].name<<" "<<a[i].Money<<endl;
- return ;
- }
↑↑↑↑↑↑↑非常冗长的代码
Greedy Gift Givers 贪婪的送礼者 USACO 模拟的更多相关文章
- USACO Training Section 1.1 贪婪的送礼者Greedy Gift Givers
P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers 题目描述 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少.在这一个问题中,每个人都准备了一 ...
- Java实现【USACO】1.1.2 贪婪的礼物送礼者 Greedy Gift Givers
[USACO]1.1.2 贪婪的礼物送礼者 Greedy Gift Givers 题目描述 对于一群要互送礼物的朋友,你要确定每个人送出的礼物比收到的多多少(and vice versa for th ...
- 洛谷 P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers
贪婪的送礼者Greedy Gift Givers 难度:☆ Code: #include <iostream> #include <cstdio> #include <c ...
- USACO Section 1.1-2 Greedy Gift Givers
Greedy Gift Givers 贪婪的送礼者 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少. 在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那 ...
- USACO . Greedy Gift Givers
Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange gifts ...
- usaco training <1.2 Greedy Gift Givers>
题面 Task 'gift1': Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided t ...
- 119 - Greedy Gift Givers
Greedy Gift Givers The Problem This problem involves determining, for a group of gift-giving frien ...
- Section 1.1 Greedy Gift Givers
Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends hasdecided to exchange gifts o ...
- 1.1.4 PROB Greedy Gift Givers
Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange gifts ...
随机推荐
- [转]在eclipse中,用maven创建一个web项目工程
1.在eclipse中用maven创建项目,右键new>>Maven Project 2.点击next继续 3.点击next继续,选择maven-archetype-webapp, 4.点 ...
- vue 使用webpack打包后路径报错以及 alias 的使用
一.vue 使用webpack打包后路径报错(两步解决) 1. config文件夹 ==> index.js ==> 把assetsPublicPath的 '/ '改为 './' 2. b ...
- 51nod 1307绳子和重物
1307 绳子与重物 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 有N条绳子编号 0 至 N - 1,每条绳子后 ...
- JUnit 单元测试断言推荐 AssertJ
文章转自:http://sgq0085.iteye.com/blog/2030609 前言 由于JUnit的Assert是公认的烂API,所以不推荐使用,目前推荐使用的是AssertJ. Assert ...
- C# 匹配可空变量
在 C# 7.0 的时候提供更好用的模式匹配方法,支持通过 is 直接转换对应的类,但是如果是尝试转换可空的对象,那么将会提示无法编译,或转换失败 在 C# 7.0 的 is 转换是十分好用的功能,例 ...
- Codeforces 837D 动态规划
Codeforces 837D 动态规划 传送门:https://codeforces.com/contest/837/problem/D 题意: 给你n个数,问你从这n个数中取出k个数,这k个数的乘 ...
- buerdepepeqi 的模版
buerdepepeqi的模板 头文件 #include <set> #include <map> #include <deque> #include <qu ...
- Java方法参数:
一个方法不能修改一个基本数据类型的参数 一个方法可以改变一个对象参数的状态 一个方法不能实现让对象参数引用一个新的对象 案例1: 一个方法不能修改一个基本数据类型的参数 String a = &quo ...
- IPv4数据报格式及其语义
一.IP数据报的格式如下图所示 版本 首部长度 服务类型 数据报长度 16比特标识 标志 13比特片偏移 寿命 上层协议 首部检验和 32比特源IP地址 32比特目的IP地址 选项(如果有的话) 数据 ...
- 最近邻分类器,K近邻分类器,线性分类器
转自:https://blog.csdn.net/oldmao_2001/article/details/90665515 最近邻分类器: 通俗来讲,计算测试样本与所有样本的距离,将测试样本归为距离最 ...