[USACO1.1]贪婪的送礼者Greedy Gift Givers
題目描述
對(duì)于一群(NP個(gè))要互送禮物的朋友,GY要確定每個(gè)人送出的錢比收到的多多少。在這一個(gè)問題中,每個(gè)人都準(zhǔn)備了一些錢來(lái)送禮物,而這些錢將會(huì)被平均分給那些將收到他的禮物的人。然而,在任何一群朋友中,有些人將送出較多的禮物(可能是因?yàn)橛休^多的朋友),有些人有準(zhǔn)備了較多的錢。給出一群朋友,沒有人的名字會(huì)長(zhǎng)于 14 字符,給出每個(gè)人將花在送禮上的錢,和將收到他的禮物的人的列表,請(qǐng)確定每個(gè)人收到的比送出的錢多的數(shù)目。
輸入輸出格式
輸入格式:
第 1 行: 人數(shù)NP,2<= NP<=10
第 2 行 到 第NP+1 行:這NP個(gè)在組里人的名字一個(gè)名字一行
第NP+2到最后:
這里的I段內(nèi)容是這樣組織的:
第一行是將會(huì)送出禮物人的名字。
第二行包含二個(gè)數(shù)字:第一個(gè)是原有的錢的數(shù)目(在0到2000的范圍里),第二個(gè) NGi 是將收到這個(gè)人禮物的人的個(gè)數(shù) 如果 NGi 是非零的, 在下面 NGi 行列出禮物的接受者的名字,一個(gè)名字一行。
輸出格式:
輸出NP行
每行是人的名字和每個(gè)人收到的比送出的錢多的數(shù)目
輸入輸出樣例
輸入樣例#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
說(shuō)明
題目翻譯來(lái)自NOCOW。
USACO Training Section 1.1
.
.
.
.
.
.
分析
直接模擬,運(yùn)用結(jié)構(gòu)體。
.
.
.
.
.
.
程序:
#include<cstdio> #include<iostream> #include<algorithm> #include<string.h> using namespace std; int n,x,h; char s[1000000],t[1000000]; struct node {char name[20];int sum; }; struct node q[1000000]; int main() {cin>>n;for (int i=1;i<=n;i++)cin>>q[i].name;for (int i=1;i<=n;i++){scanf("%s",s);for (int j=1;j<=n;j++)if (strcmp(s,q[j].name)==0){x=j;break;}int a,b;cin>>a>>b;if (b==0) continue;int y=a/b;int m=y*b;q[x].sum-=m;for (int k=1;k<=b;k++){scanf("%s",s);for (int g=1;g<=n;g++)if (strcmp(s,q[g].name)==0){h=g;break;}q[h].sum+=y;}}for (int i=1;i<=n;i++)cout<<q[i].name<<' '<<q[i].sum<<endl;return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/YYC-0304/p/9499965.html
總結(jié)
以上是生活随笔為你收集整理的[USACO1.1]贪婪的送礼者Greedy Gift Givers的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mzc和男家丁的游戏
- 下一篇: [USACO1.1]坏掉的项链Broke