正题

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


大意

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


解题思路

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

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

  1. P1090 合并果子 / [USACO06NOV] Fence Repair G(贪心+优先队列) 洛谷

    题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...

  2. 洛谷P1090 合并果子

    合并果子 题目链接 这个只能用于结构体中 struct item {int val;friend bool operator < (item a,item b){return a.val > ...

  3. 洛谷——P1090 合并果子

    题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...

  4. 贪心算法——洛谷(P1090)[NOIP2004]合并果子

    该题目也属于经典的贪心算法,在这里熟悉C++里优先队列的使用. 需要导入头文件:   #include<queue> 从这个问题可以深挖出神奇的哈夫曼树问题. 因为这题里合并的是二叉树,所 ...

  5. 合并果子(洛谷-P1090)

    题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...

  6. 树-堆结构练习——合并果子之哈夫曼树

    树-堆结构练习--合并果子之哈夫曼树 Description 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆 ...

  7. [NOIP2004]合并果子

    题目: [NOIP2004]合并果子 ,哈哈,我们今天来看一道比较简单的题嘛,这是选自NOIP上的一道题,好了,我们一起来看看题意吧: 考虑到直接复制题目,或者截屏的方式不是很方便阅读,我就把直接题目 ...

  8. java合并果子_C++(STL)树-堆结构练习——合并果子之哈夫曼树

    priority_queue 对于基本类型的使用方法相对简单. 他的模板声明带有三个参数,priority_queue Type 为数据类型, Container 为保存数据的容器,Functiona ...

  9. 1369:合并果子(fruit)——优先队列

    [题目描述] 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和 ...

最新文章

  1. 计算机小知识应用,计算机应用知识(要熟悉电脑的运用,这十个小知识你不能不懂!)...
  2. hive执行流程(3)-Driver类分析1Driver类整体流程
  3. linux中I/O设备分为两类:字符设备和块设备。
  4. mysql 从数据库配置文件_mysql数据库配置文件
  5. Spark内核以及源码解析
  6. php html转为pdf文件,php使用wkhtmltopdf实现html转pdf
  7. Android获取最新发送短信的基本信息,没有之一
  8. httpSession的正确理解
  9. java运行时内存分配详解
  10. Python实现用户登录
  11. kafka 启动 与redis启动
  12. HTTP协议详细总结
  13. PHP json_encode中文乱码解决方法
  14. word2007里插入分节符
  15. 190404每日一句
  16. python集合的并交差操作
  17. 电商数据分析师面试题分享
  18. MPB:山大倪金凤组-​​白蚁肠道微生物样品收集与制备
  19. jira是干什么_jira是什么
  20. Flask:使用蓝图来改进项目

热门文章

  1. php中添加一个链接,使用php在推文中链接一个标签
  2. 显卡mx150和230哪个好_建模渲染用专业图形显卡和游戏显卡哪个更好?
  3. 支持向量回归代码_RDKit:基于支持向量回归(SVR)预测logP
  4. mysql 10分钟一聚合_SQL-根据DateTime查询多个聚合-MySQL
  5. [设计模式]代理模式
  6. [MySQL基础]MySQL常见命令介绍
  7. LeetCode 24两两交换链表中的节点-中等
  8. [蓝桥杯2019初赛]质数-质数筛or 水题
  9. word List28
  10. php 配置远程调试,PHP Linux 环境下搭建 XDEBUG并配置远程调试