【WZOI】(基础题库)第526题 笨小孩

题目描述:

乐乐是个笨小孩,学习知识点很慢,他现在要学习n门课程,每门课程有Ci个知识点,他学习每个知识点都需要花x个小时。
但是当他学完一门课程时,他的智商就会提高,学接下来那门课的每个知识点所花的时间,就会比上门课少一个小时。当然不可能无限制的减少,每个知识点至少需要1个小时。
小C要教乐乐这n门课,请你帮他安排一下顺序,能让乐乐尽快学完。

输入格式:

第一行两个整数n和x,表示总的科目数,和乐乐学每个知识点要花的时间。

第二行,n个数,表示每门课所包含的知识点数。

输出格式:

输出最少要花的时间。

样例输入:
样例1:
2 3
4 1

样例2:
4 2
5 1 2 1

样例输出:
样例1:
11

样例2:
10

提示:

样例1解释,先学习第二门课,所花的时间是3*1,学习完后,学习知识点的时间变为2,再学习第一门的时间是2*4,所以中的时间是11。
对于60%的数据,n的范围[1,1000];
对于100%的数据,n的范围[1,105],x的范围[1,1000],每门课的知识点个数范围[1,105];

时间限制: 1000ms
空间限制: 128MB

贪心策略:先学所用时间少的课程

代码实现:
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[100001],t;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+1+n);
	for(int i=1;i<=n;i++){
		t+=a[i]*m;
		if(m>1)m--;
	}
	cout<<t;
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值