Vijos P1035 贪婪的送礼者【模拟】
贪婪的送礼者
描述
对于一群要互送礼物的朋友,你要确定每个人送出的礼物比收到的多多少。
在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人。
然而,在任何一群朋友中,有些人将送出较多的礼物(可能是因为有较多的朋友),有些人有准备了较多的钱。
给出一群朋友, 没有人的名字会长于 14 字符,给出每个人将花在送礼上的钱,和将收到他的礼物的人的列表,
请确定每个人收到的比送出的钱多的数目。
格式
输入格式
第 1 行: 人数NP,2<= NP<=10
第 2到 NP+1 行:
这NP个在组里人的名字 一个名字一行
第NP+2到最后:
这里的NP段内容是这样组织的:
第一行是将会送出礼物人的名字。
第二行包含二个数字: 第一个是原有的钱的数目(在0到2000的范围里),第二个NGi是将收到这个送礼者礼物的人的个数 如果 NGi 是非零的, 在下面 NGi 行列出礼物的接受者的名字,一个名字一行。
输出格式
输出 NP 行
每行是一个的名字加上空格再加上收到的比送出的钱多的数目。
对于每一个人,他名字的打印顺序应和他在输入的2到NP+1行中输入的顺序相同。所有的送礼的钱都是整数。
每个人把相同数目的钱给每位要送礼的朋友,而且尽可能多给,不能给出的钱被送礼者自己保留。
样例1
样例输入1
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
样例输出1
dave 302
laura 66
owen -359
vick 141
amr -150
限制
各点1S
来源
from USACO
cdwind 整理
题解:
首先要弄清楚题意,题目要求输出收到的比送出的钱多的数目。送出的也就是原来的-余下的,然后再用一个数组记录收到的,答案就是两者之差。
这里最好用一个结构体来保存名字、原有的钱数和收到的钱数。
下面给出AC代码:
1 #include <bits/stdc++.h> 2 using namespace std; 3 int n; 4 char str[15]; 5 inline int read() 6 { 7 int x=0,f=1; 8 char ch=getchar(); 9 while(ch<'0'||ch>'9') 10 { 11 if(ch=='-') 12 f=-1; 13 ch=getchar(); 14 } 15 while(ch>='0'&&ch<='9') 16 { 17 x=x*10+ch-'0'; 18 ch=getchar(); 19 } 20 return x*f; 21 } 22 inline void write(int x) 23 { 24 if(x<0) 25 { 26 putchar('-'); 27 x=-x; 28 } 29 if(x>9) 30 { 31 write(x/10); 32 } 33 putchar(x%10+'0'); 34 } 35 struct people 36 { 37 char name[15]; 38 int money; 39 int leftmoney; 40 }p[11]; 41 int find() 42 { 43 int i; 44 for(i=1;i<=n;i++) 45 { 46 if(strcmp(str,p[i].name)==0) 47 break; 48 } 49 return i; 50 } 51 int main() 52 { 53 n=read(); 54 int i,j; 55 for(i=1;i<=n;i++) 56 { 57 cin>>p[i].name; 58 p[i].leftmoney=0; 59 } 60 for(j=1;j<=n;j++) 61 { 62 cin>>str; 63 int num=find(); 64 int sum; 65 cin>>p[num].money>>sum;//sum表示送出的人数 66 if(sum) 67 { 68 int mon=p[num].money%sum; 69 p[num].leftmoney+=mon; 70 for(i=0;i<sum;i++) 71 { 72 cin>>str; 73 p[find()].leftmoney+=((p[num].money-mon)/sum); 74 } 75 } 76 } 77 for(i=1;i<=n;i++) 78 { 79 cout<<p[i].name<<" "<<p[i].leftmoney-p[i].money<<endl; 80 } 81 return 0; 82 }
作 者:Angel_Kitty
出 处:https://www.cnblogs.com/ECJTUACM-873284962/
关于作者:阿里云ACE,目前主要研究方向是Web安全漏洞以及反序列化。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
欢迎大家关注我的微信公众号IT老实人(IThonest),如果您觉得文章对您有很大的帮助,您可以考虑赏博主一杯咖啡以资鼓励,您的肯定将是我最大的动力。thx.
我的公众号是IT老实人(IThonest),一个有故事的公众号,欢迎大家来这里讨论,共同进步,不断学习才能不断进步。扫下面的二维码或者收藏下面的二维码关注吧(长按下面的二维码图片、并选择识别图中的二维码),个人QQ和微信的二维码也已给出,扫描下面👇的二维码一起来讨论吧!!!
欢迎大家关注我的Github,一些文章的备份和平常做的一些项目会存放在这里。