USACO 1.1 Greedy Gift Givers

模拟。

如果用$map$的话,会很好写。

如果你不会$map$的话,在此小广告:https://blog.csdn.net/CQBZLYTina/article/details/80063739

 1 /*
 2 ID:Starry21
 3 LANG:C++
 4 TASK:gift1                 
 5 */
 6 #include<iostream>
 7 #include<string>
 8 #include<cstdio>
 9 #include<cstring>
10 #include<map>
11 using namespace std;
12 #define N 15
13 int n;
14 map<string,int> init;
15 map<string,int> rev;
16 string name[N];
17 int main() 
18 {
19     //freopen("gift1.in","r",stdin);
20     //freopen("gift1.out","w",stdout);
21     scanf("%d",&n);
22     string a,b;
23     for(int i=1;i<=n;i++)
24         cin>>name[i];
25     for(int i=1;i<=n;i++)
26     {
27         cin>>a;
28         scanf("%d",&init[a]);
29         int k;scanf("%d",&k);
30         if(k==0) continue;
31         int m=init[a]/k;
32         init[a]=m*k;
33         for(int i=1;i<=k;i++)
34         {
35             cin>>b;
36             rev[b]+=m;
37         }
38     }
39     for(int i=1;i<=n;i++)
40     {
41         cout<<name[i];
42         printf(" %d
",rev[name[i]]-init[name[i]]);
43     }
44     return 0;
45 }
View Code
原文地址:https://www.cnblogs.com/lyttt/p/11918556.html