洛谷P1090题解-创新互联-成都快上网建站

洛谷P1090题解-创新互联

这个题我第一次的想法就是把数据从小到大,然后依次合并,最后就能得到结果!
后来发现,虽然最小的两个合并,但是可能两个小的合并后的数据大于下一个,再次合并就是有问题的。因此要对得到后的数据进行排序再依次合并。

创新互联公司服务项目包括西乌珠穆沁网站建设、西乌珠穆沁网站制作、西乌珠穆沁网页制作以及西乌珠穆沁网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,西乌珠穆沁网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到西乌珠穆沁省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

此时,如果用普通的数组和sort函数的话必定会超时,因此我们这里可以用到优先队列,下面附上一些用法。

#include//头文件
priority_queue//定义


priority_queue,greater>q;//升序队列

priority_queue,less>q;//降序队列

priority_queuea//此时默认为降序队列

//greater和less是std实现的两个仿函数(就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了)

之后本题就很好解决了,下面附上代码

#include#include 
#includeusing namespace std;
const int N = 10005;
priority_queue, greater>a;
int main()
{
	int n;
	int c, x, y;
	long long k = 0;
	cin >>n;
	for (int i = 1; i<= n; i++)
	{
		cin >>c;
		a.push(c);
	}
	for (int i = 1; i<= n-1 ; i++)
	{
		x = a.top();
		a.pop();
		y = a.top();
		a.pop();
		a.push(x + y);
		k += x + y;

	}
	cout<< k;
	return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享标题:洛谷P1090题解-创新互联
地址分享:http://kswjz.com/article/ceisoe.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流