P1090-合并果子【离散化,队列,时间复杂度O(n)】

正题

洛谷题目链接:
https://www.luogu.org/problemnew/show/P1090
洛谷博客链接:
https://www.luogu.org/blog/user52918/solution-p1090
O(nlogn)O(nlogn)堆算法:
https://blog.csdn.net/mr_wuyongcong/article/details/79223780


大意

有n个果子堆,两两合并价格是两堆和相加,求合并为一堆后最小价格。


解题思路

据说是离散化算法 就是先把原本的从小到大排序排好。然后用两个队列,一个是存储原本的,另一个是存储合成的(由于原本的是从小到大所有新开的也是从小到大)。然后在两个队列的头取最小的,执行两次然后把这两个合并加入第二个队列中。 然后由于输入: (1ai20000)(1≤ai≤20000) ,所以用桶排序就可以 O(n)O(n) 时间复杂度


代码

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int k,x,num,n1,n2,a1[30001],a2[30001],t[20001],w,sum;
int main()
{scanf("%d",&num);memset(a1,127/3,sizeof(a1));memset(a2,127/3,sizeof(a2));for (int i=1;i<=num;i++){scanf("%d",&x);t[x]++;//桶}for (int i=1;i<=20000;i++){while (t[i])//通排序{t[i]--;a1[++n1]=i;}}int i=1,j=1;k=1;while (k<num){if (a1[i]<a2[j])//取最小值{w=a1[i];i++;}else{w=a2[j];j++;}if (a1[i]<a2[j])//取第二次{w+=a1[i];i++;}else{w+=a2[j];j++;}a2[++n2]=w;//加入第二个队列k++;//计算合并次数sum+=w;//计算价值}printf("%d",sum);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

投资理财要趁早,基金风险是最小!

大家好&#xff0c;我是雄雄&#xff0c;前几天&#xff0c;有人私信我让我在公众号中推一篇关于理财的文章&#xff0c;说实在的&#xff0c;以我这二把刀的能力&#xff0c;没啥资历教大家理财&#xff0c;不过既然人家都这么说了&#xff0c;那我就来分享一下我自己对于目前…

Java中线程池,你真的会用吗

转载自 Java中线程池&#xff0c;你真的会用吗 在《深入源码分析Java线程池的实现原理》这篇文章中&#xff0c;我们介绍过了Java中线程池的常见用法以及基本原理。 在文中有这样一段描述&#xff1a; 可以通过Executors静态工厂构建线程池&#xff0c;但一般不建议这样使…

解决 CefSharp WPF控件不能使用输入法输入中文的问题(代码已提交到 github)

首先&#xff0c;本文所有 代码已经提交到github&#xff0c;需要的可以直接从github获取&#xff1a;https://github.com/starts2000/CefSharp&#xff0c;希望可以帮助到有需要的朋友们。 CEF 简介 CEF is a BSD-licensed open source project founded by Marshall Greenbl…

ssl1747-登山机器人【离散化,玄学,贪心】

正题 大意 有n个机器人&#xff0c;每个机器人带xi点能量&#xff0c;行走需要消耗yi点能量&#xff0c;求这个n个机器人不回头的接力最多能走多远&#xff08;一个走到就行了&#xff09;。 解题思路 好像不是很难&#xff0c;处理接力时油的交接就好了。 假设现在有两个机…

java中的泛型类型擦除

大家好&#xff0c;我是雄雄&#xff0c;今天给大家分享的是&#xff1a;java的泛型是类型擦除的。写在前面那么何为类型擦除&#xff1f;类型擦除就是在编译期明确去掉所编程序的类型系统。啥&#xff1f;还不明白&#xff1f;以java泛型为例&#xff0c;java的泛型在编译期有…

性能优化之抛弃Calendar

转载自 性能优化之抛弃Calendar 目前在做限流相关的需求&#xff0c;有这么一个限流策略&#xff0c;和用户相关&#xff0c;当系统发生故障时&#xff0c;允许一个非核心接口按照用户的百分比进行限流&#xff0c;如果完全按照UUID进行hash&#xff0c;那么每次都是限制同一…

基于.net的微服务架构下的开发测试环境运维实践

眼下&#xff0c;做互联网应用&#xff0c;最火的架构是微服务&#xff0c;最热的研发管理就是DevOps&#xff0c; 没有之一。微服务、DevOps已经被大量应用&#xff0c;它们已经像传说中的那样&#xff0c;可以无所不能。特来电云平台&#xff0c;通过近两年多的实践&#xff…

洛谷P3845-球赛【离散化,贪心】

正题 题目连接&#xff1a; https://www.luogu.org/problemnew/show/P3845 AC信息&#xff1a; https://www.luogu.org/record/show?rid6955910 大意 有一些比分记录&#xff0c;不过双方可能会搞反&#xff08;如1−21−2可能会记录成2−12−1&#xff09;求这之间至少有…

挺详细的spring+springmvc+mybatis配置整合|含源代码

大家好&#xff0c;我是雄雄&#xff0c;今天来带着大家来配置一下SSM&#xff08;springspringmvcmybatis&#xff09;框架。01新建java web项目直接在myeclipse中&#xff0c;新建一个web项目即可。02导入jar包将SSM所需的jar包复制到项目的/WebRoot/WEB-INF/lib中&#xff0…

Java中如何实现线程的超时中断

转载自 Java中如何实现线程的超时中断 背景 之前在实现熔断降级组件的时候&#xff0c;需要实现接口请求的超时中断。意思是&#xff0c;业务在使用熔断降级功能时&#xff0c;在平台上设置了一个超时时间&#xff0c;如果请求进入熔断器开始计时&#xff0c;接口在超时时间…

GDOI2018-《被虐记》

序章 五一劳动节当然是来劳动的啦&#xff01;于是乎五一就变成一件不存在的事&#xff0c;放学那天的中午就坐车去中山了。 然后睡了一会就快到了&#xff0c;下了高速&#xff0c;突然想起来这次带来手机就照了一张照。然后就到酒店了。附近也有挺多吃的&#xff0c;酒店一…

DDD理论学习系列(10)-- 聚合

1.引言 聚合&#xff0c;最初是UML类图中的概念&#xff0c;表示一种强的关联关系&#xff0c;是一种整体与部分的关系&#xff0c;且部分能够离开整体而独立存在&#xff0c;如车和轮胎。 在DDD中&#xff0c;聚合也可以用来表示整体与部分的关系&#xff0c;但不再强调部分…

#面试!,一定要注意,避免踩这些雷!!

大家好&#xff0c;我是雄雄。前言今天&#xff0c;对2班的同学们进行了模拟面试&#xff0c;由于学生们第一次参与模拟面试&#xff0c;所以会出现各种各样的问题&#xff0c;有应该出的&#xff0c;也有不该出的&#xff0c;现在做个简单的总结&#xff0c;供三班的孩子们参考…

一次动态代理的填坑之旅

转载自 一次动态代理的填坑之旅 背景 想在现有的接口加上熔断降级或者限流的功能&#xff0c;比较好的方式是通过注解的方式&#xff0c;并基于动态代理进行实现&#xff0c;下面代码是Rhino的实现 Rhino public class ServiceImpl {Degrade(rhinoKey "syncMethod-0&…

3班的第一次模拟面试

大家好&#xff0c;我是雄雄&#xff0c;前几天总结了下面试别的班时所出现的问题&#xff0c;今天&#xff0c;3班进行了第一次模拟面试。虽然在面试之前千叮咛万嘱咐&#xff0c;但是在正式模拟面试时还是有些问题。一方面由于这样的模拟面试以前没有过&#xff0c;所以紧张过…

漫画:如何实现大整数相加

转载自 漫画&#xff1a;如何实现大整数相加 在程序中列出的 “竖式” 究竟是什么样子呢&#xff1f;我们以 426709752318 95481253129 为例&#xff0c;来看看大整数相加的详细步骤&#xff1a; 第一步&#xff0c;把整数倒序存储&#xff0c;整数的个位存于数组0下标位置&…

ssl2644-线段树练习1【线段树】

正题 题意 一块长m的墙&#xff0c;有n个大小不同的盒子放在前面&#xff0c;求没有被挡住的墙的总长度 解题思路 用线段树&#xff0c;0表示有没被遮挡的&#xff0c;1表示完全被遮挡&#xff0c;-1表示有遮挡的和没遮挡的。然后记数。 代码 #include<cstdio> usin…