本文主要是介绍2247: 【区赛】[宁波32届小学生]买玩具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
玩具店有个活动,买2个送1个: 3个玩具只要付较贵的2个玩具的钱就可以了。举个例子: 10 3 2 4 6 4 9,如果这样组合(10, 3, 2), (4, 6, 4), (9),就在第一个括号中省下2元,第二个括号 中省下4元,但第三个括号不能省了,因为只有一个玩具。
小星星是个懂事的孩子,他想尽可能的为家里省钱,他能成功吗? (注意:玩具组合的数量可以是1或者2或者3 )
输入
输入的第一行一个整数N(1 ≤N ≤ 100000),表示玩具的数量。 50%的数据中N≤ 2000
接下来的N行,每行包含一个整数Ci(1 ≤Ci≤ 100000), 表示每个玩具的价格
输出
一个数,表示最终要为这些玩具付出的最小价格
样例输入
4 3 2 3 2
样例输出
8
提示
【样例输入1】
4
3
2
3
2
【样例输出1】
8
【样例输入2】
6
6
4
5
5
5
5
【样例输出2】
21
【样例 1 解释】 分组(3,2,2)( 3)
【样例 2 解释】 分组(6,4,5)( 5,5,5)
C++
#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){return a>b;
}
int main(){int a,c[100005],he=0;cin>>a;for(int i=0;i<a;i++){cin>>c[i];he+=c[i];}sort(c,c+a,cmp);for(int i=0;i<a;i++){if((i+1)%3==0)he-=c[i];}cout<<he;return 0;
}
这篇关于2247: 【区赛】[宁波32届小学生]买玩具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!