USACO Section 1.1-2 Greedy Gift Givers

Greedy Gift Givers 貪婪的送禮者ios

    對於一羣(NP個)要互送禮物的朋友,GY要肯定每一個人送出的錢比收到的多多少。 spa

    在這一個問題中,每一個人都準備了一些錢來送禮物,而這些錢將會被平均分給那些將收到他的禮物的人。code

    然而,在任何一羣朋友中,有些人將送出較多的禮物(多是由於有較多的朋友),有些人有準備了較多的錢。 blog

    給出一羣朋友,沒有人的名字會長於 14 字符,給出每一個人將花在送禮上的錢,和將收到他的禮物的人的列表, 請肯定每一個人收到的比送出的錢多的數目。ci

PROGRAM NAME: gift1string

INPUT FORMAT:it

(file gift1.in)io

  • 第 1 行: 人數NP,2<= NP<=10
  • 第 2 行 到 第NP+1 行:這NP個在組裏人的名字 一個名字一行
  • 第NP+2到最後:

這裏的I段內容是這樣組織的:class

  • 第一行是將會送出禮物人的名字。
  • 第二行包含二個數字: 第一個是送出的錢的數目(在0到2000的範圍裏),第二個 NGi 是將收到這我的禮物的人的個數 若是 NGi 是非零的, 在下面 NGi 行列出禮物的接受者的名字,一個名字一行。

OUTPUT FORMAT:stream

(file gift1.out)

輸出 NP 行

每行是一個的名字加上空格再加上收到的比送出的錢多的數目。

對於每個人,他名字的打印順序應和他在輸入的2到NP+1行中輸入的順序相同。全部的送禮的錢都是整數。

每一個人把相同數目的錢給每位要接受禮物的朋友,並且儘量多給,不能給出的錢(即沒法被整除的錢)由送禮者本人持有。

SAMPLE INPUT:

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

 

SAMPLE OUTPUT:

 

dave 302
laura 66
owen -359
vick 141
amr -150
        
      本題也是模擬水題...
      須要注意的就是 有的錢不能整除分給朋友...向下取整便可,剩的錢歸本身~~
      分給0個朋友的話...錢就是本身的~~
 1 /*
 2 ID: jvxie1
 3 PROG: gift1
 4 LANG: C++ 
 5 */
 6 #include<cstdio>
 7 #include<cstring>
 8 #include<iostream>
 9 #include<algorithm>
10 #define N 20
11 using namespace std;
12 string name[N],a;
13 int money[N];
14 int find(string x,int n){for(int i=1;i<=n;i++)if(name[i]==x)return i;}
15 int main()
16 {
17     freopen("gift1.in","r",stdin);
18     freopen("gift1.out","w",stdout);
19     int NP,Mey,Ngi,Now,NowMey,i,j;
20     cin>>NP;
21     for(i=1;i<=NP;i++)
22         cin>>name[i];
23     for(i=1;i<=NP;i++)
24     {
25         cin>>a>>Mey>>Ngi;
26         Now=find(a,NP);
27         if(Ngi>0)
28         {
29             money[Now]-=Mey;
30             NowMey=Mey/Ngi;
31             money[Now]+=(Mey-Ngi*NowMey);
32             for(j=0;j<Ngi;j++)
33             {
34                 cin>>a;
35                 Now=find(a,NP);
36                 money[Now]+=NowMey;
37             }
38         }
39         else
40             money[Now]+=Mey;
41     }
42     for(i=1;i<=NP;i++)
43         cout<<name[i]<<' '<<money[i]<<endl;
44     return 0;
45 }
46         
相關文章
相關標籤/搜索