过年啦!小B高兴的不行了,她收到了很多红包,可以实现好多的愿望呢。小B可是对商店货架上心仪的货物红眼好久了,只因囊中羞涩作罢,这次她可是要大大的shopping一番。小B想去购物时,总是习惯性的把要买的东西列在一个购买清单上,每个物品单独列一行(即便要买多个某种物品),这次也不例外。
2017-05-13 17:42
816 查看
include "stdafx.h"
#include<iostream> #include<vector> #include <algorithm> #include<iomanip> #include<string> #include<set> using namespace std; struct Good { string name; int num; }; bool compareGood(Good g1,Good g2) { return g1.num > g2.num; } bool compareLess(int num1, int num2) { return num1 < num2; } bool compareMore(int num1, int num2) { return num1 > num2; } int main() { int n, m; while (cin>>n>>m) { vector<int> prices; vector<Good>list; for (int i = 0; i < n; i++) { int temp; cin >> temp; prices.push_back(temp); } for (int i = 0; i < m; i++) { string name; cin >> name; bool find = false; for (int j = 0; j < list.size(); j++) { if (list[j].name == name) { list[j].num++; find = true; break; } } if (find == false) { Good good; good.name=name; good.num = 1; list.push_back(good); } } stable_sort(list.begin(), list.end(), compareGood); int less=0; stable_sort(prices.begin(), prices.end(),compareLess); for (int i = 0; i < list.size(); i++) { // cout <<"最低:" <<list[i].name << " " << list[i].num<<" "<<prices[i] << endl; less += (list[i].num)*prices[i]; } int more = 0; stable_sort(prices.begin(), prices.end(),compareMore); for (int i = 0; i < list.size(); i++) { // cout << "最高:" << list[i].name << " " << list[i].num << " " << prices[i] << endl; more += (list[i].num)*prices[i]; } cout << less << " " << more << endl; } }
熟练使用C++中提供的算法,即能提高效率,又能提高准确性
相关文章推荐
- 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10);如果给你一个背包它能容纳的重量为m(10<=m<=20),你所要做的就是把物品装到背包里,使
- 对于每个小伙伴,在单独的一行输出一个正整数表示他能得到的最高报酬。一个工作可以被多个人选择。
- 一个真实的项目经历,很多东西大家可以借鉴下
- 一个真实的项目经历,很多东西大家可以借鉴下
- 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n
- 背包问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10);如果
- 牛牛和15朋友来玩打土豪分田地的游戏,牛牛决定让你来分田地,地主的田地可以看成是一个矩形,每个位置有一个价值。分割田地的方法是横竖各切三刀,分成26份,作为领导干部,牛牛总是会选择其中总价值最小的一份田地,作为牛牛最好的朋友,你希望牛牛取得的田地价值和尽可能大,你知道这个值最大可以是多少吗? 输入两个整数n和m(1≤n,m≤75)表示田地的大小,接下来n行,每行包括m个0-9之间的数字,表示每块
- 一个真实的项目经历,很多东西大家可以借鉴下
- 最近做了一个小东西,对于接口实现类。发现很多都是一个套路,所以备份下,以后可以经常用到! 这几个是单纯查询的实现类。
- 最近写了一个红包雨的小功能,但感觉自己的js还有很多地方可以提高,望大神们可以帮忙指点一二
- 春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。
- Linux系统中,有两个文件file1和file2,每个文件的每一行都是#UUID,其中的每一UUID表示一个号。要找出在file1中有而在file2中没有的UUID,使用cat,sort,uniq三个命令如何实现
- ViewPager 结合Fragment实现一个Activity里包含多个可滑动的标签页,每个标签页可以有独立的布局及响应。
- linux下用lex/yacc实现的一个小汇编器,for 体系实习2,实习中唯一可以拿的出来的东西
- 一个真实的项目经历,很多东西大家可以借鉴下
- Problem Description 求n个数的最小公倍数。 Input 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。 Output 为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。 Sample
- 一个获取rgb的小程序,有兴趣的可以交流交流,好多地方还不够完美,不过功能可以实现(C# winForm)
- 《c primer pius》第六章第14题,发现网上好多都有问题,编写一个程序读入一行输入,然后反向打印该行,您可以把输入存储在一个char数组中
- 你就是一个画家!你现在想绘制一幅画,但是你现在没有足够颜色的颜料。为了让问题简单,我们用正整数表示不同颜色的颜料。你知道这幅画需要的n种颜色的颜料,你现在可以去商店购买一些颜料,但是商店不能保证能供应所有颜色的颜料,所以你需要自己混合一些颜料。混合两种不一样的颜色A和颜色B颜料可以产生(A XOR B)这种颜色的颜料(新产生的颜料也可以用作继续混合产生新的颜色,XOR表示异或操作)。本着勤俭节约的
- 表单流程中一个节点是多人共同执行,每个执行人可以选择下一步要执行人员的实现思路