UVa 11369 - Shopaholic
题意:
又到了剁手的季节,购物狂们开始行动,超市也开始行动,规定是:每买三件,可以省去1件最便宜的价格。
给出买的商品数,和每个商品的价值,求出购物狂一共赚了多少钱,呵呵。
思路:
把数据从大到小排序,把3的倍数的商品价值相加,就是答案。
实现:重写C++STL里的sort()函数的比较函数 bool compare();
代码:
1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <cstdlib> 5 #include <algorithm> 6 using namespace std; 7 8 #define MAXN 20000+10 9 10 bool cmp(int a,int b){ 11 if(a>b)return true; 12 else return false; 13 } 14 class Shopaholic{ 15 private: 16 int thingsNum; 17 int price[MAXN]; 18 int ansNum; 19 public: 20 void init(); 21 void process(); 22 }; 23 void Shopaholic::init(){ 24 memset(price,0,sizeof(price)); 25 ansNum = 0; 26 } 27 void Shopaholic::process(){ 28 int cases; 29 cin>>cases; 30 while(cases--){ 31 init(); 32 cin>>thingsNum; 33 for(int i = 0;i < thingsNum;i++){ 34 cin>>price[i]; 35 } 36 sort(price,price + thingsNum,cmp); 37 for(int i = 2;i < thingsNum;i += 3){ 38 ansNum += price[i]; 39 } 40 cout<<ansNum<<endl; 41 42 } 43 } 44 45 int main() 46 { 47 #ifndef ONLINE_JUDGE 48 freopen("D:\\acm.txt","r",stdin); 49 #endif // ONLINE_JUDGE 50 Shopaholic shopaholic; 51 shopaholic.process(); 52 return 0; 53 }
Donghua University