专栏文章

题解:P13463 [GCJ 2008 #1C] Text Messaging Outrage

P13463题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mioq1u3z
此快照首次捕获于
2025/12/02 23:17
3 个月前
此快照最后确认于
2025/12/02 23:17
3 个月前
查看原文

题解

看到这道题第一眼就是贪心。
我们发现,出现字母的次数越多,我们就越应该把它放在前面,所以直接对数组排序,越大的放在前面,也就是将次数 ×1 \times 1,以此类推,统计答案即可。

正确代码

CPP
#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);//输出
	}
}//请不要直接复制粘贴,谢谢

评论

0 条评论,欢迎与作者交流。

正在加载评论...