首页 > 其他 > 详细

P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers

时间:2019-08-03 09:28:41      阅读:73      评论:0      收藏:0      [点我收藏+]

P1201题库链接:https://www.luogu.org/problem/P1201

难度:普及-

算法标签:模拟

1.map映射模拟 O(np*m) 得分100

由于最近做的map题比较多,所以马上就想到了map做法,嗑了快一个小时,终于写出了正解,输入时用s数组记录人名的顺序,方便输出,并建立两个map,分别表示每个人收到的钱(get)和送出的钱(put),利用人名(string)作为map的Key值。当送出礼物时,让give[giver]加上送出的每个礼物的价值(注意价值是整数,需要下取整) * 人数,表示送出礼物所花费的钱;当收到礼物时,让get[geter]不断加上所收到的礼物的价值,即为所收到礼物的总价值。最后输出时,依次输出用每个人收到礼物的价值减去送礼物花费的钱,即为他收到的钱比送出的钱多的数目

 1 #include <iostream>
 2 #include <cmath>
 3 #include <map>
 4 using namespace std;
 5 map<string, int> get;
 6 map<string, int> give;
 7 string s[11];
 8 int main()
 9 {
10     int np;
11     cin >> np;
12     for(int i = 0; i < np; ++i)
13     {
14         cin >> s[i];
15         get[s[i]] = 0;
16         give[s[i]] = 0;
17     }
18     for(int i = 1; i <= np; ++i)
19     {
20         int m, e;
21         double n;
22         string giver;
23         cin >> giver >> n >> m;
24         e = floor(n / m);
25         give[giver] += e * m;
26         for(int j = 1; j <= m; ++j)
27         {
28             string geter;
29             cin >> geter;
30             get[geter] += e;
31         }
32     }
33     for(int i = 0; i < np; ++i)
34         cout << s[i] <<   << get[s[i]] - give[s[i]] << endl;
35     return 0;
36 } 

P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers

原文:https://www.cnblogs.com/ZhangRunqi/p/11293761.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!