贪婪的送礼者
来源:互联网 发布:ubuntu开机命令行模式 编辑:程序博客网 时间:2024/04/30 17:06
题目描述
对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少。在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人。然而,在任何一群朋友中,有些人将送出较多的礼物(可能是因为有较多的朋友),有些人有准备了较多的钱。给出一群朋友,没有人的名字会长于 14 字符,给出每个人将花在送礼上的钱,和将收到他的礼物的人的列表,请确定每个人收到的比送出的钱多的数目。
输入输出格式
输入格式:第 1 行: 人数NP,2<= NP<=10
第 2 行 到 第NP+1 行:这NP个在组里人的名字一个名字一行
第NP+2到最后:
这里的I段内容是这样组织的:
第一行是将会送出礼物人的名字。
第二行包含二个数字:第一个是原有的钱的数目(在0到2000的范围里),第二个 NGi 是将收到这个人礼物的人的个数 如果 NGi 是非零的, 在下面 NGi 行列出礼物的接受者的名字,一个名字一行。
#include<bits/stdc++.h>using namespace std;int a[200];//记录收到的钱 int b[200];//记录送出的钱 int sum;int n;string name[200];//记录名字 string s;void search(string ss)//找到他是第几个 { for (int i=1;i<=n;i++) { if (ss==name[i]) {sum=i; break; } } return; }int main(){scanf("%d",&n);for (int i=1;i<=n;i++) cin>>name[i]; int x,y;for (int i=1;i<=n;i++){ cin>>s; cin>>x>>y; if (y==0) //特殊情况特殊讨论 { search(s); a[sum]+=x; continue; } int num=x/y;//均分送礼的钱 search(s); a[sum]+=x-num*y;//将没除完的钱保存起来 b[sum]+=x; for (int k=1;k<=y;k++) { cin>>s;//输入被送礼的人 search(s);//被送礼的人进行标记 a[sum]+=num;//被送礼的人收到的钱 } } for (int i=1;i<=n;i++) { cout<<name[i]<<" "; cout<<a[i]-b[i]<<endl; } return 0;}
阅读全文
0 0
- 贪婪的送礼者
- USACO 贪婪的送礼者
- 【USACO】贪婪的送礼者
- P1035 贪婪的送礼者
- 贪婪的礼物送礼者
- 贪婪的送礼者vijos
- 【USACO TRAINING】贪婪的送礼者【原创】
- Greedy Gift Givers 贪婪的送礼者
- vijos 1035 贪婪的送礼者
- 【USACO】贪婪的送礼者题解
- Vijos 1035 贪婪的送礼者
- 【C++】【USACO1.1.2】贪婪的送礼者
- USACO——贪婪的送礼者
- USACO1.1.2 贪婪的送礼者
- Greedy Gift Givers 贪婪的送礼者
- Greedy Gift Givers贪婪的礼物送礼者
- usaco1.1.2 Greedy Gift Givers 贪婪的送礼者
- USACO1.1.2 Greedy Gift Givers(贪婪的礼物送礼者)
- pat 乙级 1011. A+B和C (15)
- 动态代理
- C++ 常量与内联
- lib 和 dll 的区别、生成以及使用详解
- 关于线程的总结
- 贪婪的送礼者
- C++文件
- 【javascript】详解变量,值,类型和宿主对象
- Hive 学习笔记
- java代码实现JVM栈溢出,堆溢出
- JDBC查询的通用方法
- 《嵌入式开发探秘》之第二章 开发环境搭建(2)
- 教你如何完全卸载Java
- 162. Find Peak Element