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

浙公网安备 33010602011771号