首页 > 代码库 > hdu 5099

hdu 5099

题意:n个咖啡中,每3杯中最便宜的一杯可以免费,求最少需要付多少钱。

思路:从大到小排序,然后每逢3就免费。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 
 5 struct node{
 6     int x;
 7 }a[100005];
 8 
 9 bool cmp(node p,node q){
10     return p.x>q.x;
11 }
12 int main(){
13     int t;
14     int k=1;
15     scanf("%d",&t);
16     while(t--){
17         int n;
18         scanf("%d",&n);
19         for(int i=1;i<=n;i++)  scanf("%d",&a[i]);
20         sort(a+1,a+1+n,cmp);
21         ll sum=0;
22         for(int i=1;i<=n;i++){
23             if(i%3==0) continue;
24             sum+=a[i].x;
25         }
26         printf("Case #%d: ",k++);
27         cout<<sum<<endl;
28     }
29     return 0;
30 }

 

hdu 5099