题解:P13463 [GCJ 2008 #1C] Text Messaging Outrage
TCY1234567 · · 题解
题解
看到这道题第一眼就是贪心。
我们发现,出现字母的次数越多,我们就越应该把它放在前面,所以直接对数组排序,越大的放在前面,也就是将次数
正确代码
#include <bits/stdc++.h>
#define int long long//十年OI一场空,不开 long long 见祖宗。
using namespace std;
int a[1000005];
signed main()
{
int t;
scanf("%lld",&t);
for(int i=1;i<=t;i++)
{
int n,m,k;
scanf("%lld%lld%lld",&n,&m,&k);
for(int j=1;j<=k;i++) scanf("%lld",&a[j]);
sort(a+1,a+k+1);
int cnt = 1,qwq = 0,ans = 0;
for(int j=k;j>=1;i--)
{
ans+=a[j]*cnt;
qwq++;
if(qwq==m)//统计现在应该分配到第几个键了
{
cnt++;
qwq = 0;
}
}
printf("Case #%lld: %lld\n",i,ans);//输出
}
}//请不要直接复制粘贴,谢谢