2648 “Shopping”

问题描述

 输入n,代表商店的数量

 输入n个商店的名称

输入天数m,输入每个商店s价格的浮动为p;

输出商店“memory”的排名t+1,t代表有t个商店的价格高于“memory”

 

 

代码如下

 

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 //map通过K-V分别来计算商店的价格的改变
 5 //it 表示的是图M的第一整个元素;
 6 //it->first 表示的是这个元素的key的值;
 7 //it->second 表示的是这个元素的value的值。
 8 int main()
 9 {
10     int n,m,p;
11     map<string,int> shop;
12     while(cin>>n){    //商店的数量
13         string s;
14         for(int i = 1; i <= n; i++){
15             cin>>s;             //输入商店的名称,实际上不用处理
16         }
17         cin>>m;       //输入天数
18         while(m--){  //每天
19             for(int i = 1;i <=n; i++) {   //n个商店
20                 cin>>p>>s;   //商店int价格p,名称string类型的s
21                 shop[s]+=p;  //用map可以直接操作商店,加上价格
22 
23             }
24             int rank = 1;
25             map<string,int>::iterator it;   //迭代器
26             for(it = shop.begin();it != shop.end();it++){
27                 if(it->second > shop["memory"])  //比较价格
28                     rank++;
29             }
30             cout<<rank<<endl;  //由于初始值为1,所以排名不需要再加1了
31         }
32         shop.clear();   //清空map
33 
34     }
35     return 0;
36 }

 

总结

一、第i天显示第i天后的结果只需要将结果输出放在天数的循环中即可

二、map对商店做k,价格做V的计算应用

三、排名统计,t个大于当前,排名为t+1

posted @ 2022-08-15 22:58  暖阳的雪  阅读(33)  评论(0)    收藏  举报