poj_3253_priority queue
描述
农夫约翰想要修篱墙,他需要N块木板,第i块板长Li。然后他买了一块很长的板子,足够他分成N块。忽略每次锯板子带来的损失。
约翰忘记买锯子了,于是像Don借。Don要收费,每次锯一下,就要收一次板子长度的钱。Don让约翰自己选择锯的方案。
求问约翰最少要花多少钱。
思路
类似Huffman编码的思想。
代码
1 #include<iostream>
2 #include<cstdio>
3 #include<queue>
4 #include<functional>
5
6 using namespace std;
7
8
9 typedef long long ll;
10 const int MAX_N = 20000;
11 int N, L[MAX_N];
12
13 void solve()
14 {
15 ll ans = 0;
16 priority_queue<int, vector<int>, greater<int>> que;
17 for (int i = 0; i<N; i++)
18 {
19 que.push(L[i]);
20 }
21
22 while (que.size()>1)
23 {
24 int l1, l2;
25 l1 = que.top();
26 que.pop();
27 l2 = que.top();
28 que.pop();
29
30 ans += l1 + l2;
31 que.push(l1 + l2);
32
33 }
34 printf("%lld\n", ans);
35 }
36
37 int main()
38 {
39 cin >> N;
40 for (int i = 0; i < N; i++)
41 {
42 cin >> L[i];
43 }
44 solve();
45 return 0;
46 }
poj_3253_priority queue的更多相关文章
- [数据结构]——链表(list)、队列(queue)和栈(stack)
在前面几篇博文中曾经提到链表(list).队列(queue)和(stack),为了更加系统化,这里统一介绍着三种数据结构及相应实现. 1)链表 首先回想一下基本的数据类型,当需要存储多个相同类型的数据 ...
- Azure Queue Storage 基本用法 -- Azure Storage 之 Queue
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure File Storage 基 ...
- C++ std::queue
std::queue template <class T, class Container = deque<T> > class queue; FIFO queue queue ...
- 初识Message Queue之--基础篇
之前我在项目中要用到消息队列相关的技术时,一直让Redis兼职消息队列功能,一个偶然的机会接触到了MSMQ消息队列.秉着技术还是专业的好为原则,对MSMQ进行了学习,以下是我个人的学习笔记. 一.什么 ...
- 搭建高可用的rabbitmq集群 + Mirror Queue + 使用C#驱动连接
我们知道rabbitmq是一个专业的MQ产品,而且它也是一个严格遵守AMQP协议的玩意,但是要想骚,一定需要拿出高可用的东西出来,这不本篇就跟大家说 一下cluster的概念,rabbitmq是erl ...
- PriorityQueue和Queue的一种变体的实现
队列和优先队列是我们十分熟悉的数据结构.提供了所谓的“先进先出”功能,优先队列则按照某种规则“先进先出”.但是他们都没有提供:“固定大小的队列”和“固定大小的优先队列”的功能. 比如我们要实现:记录按 ...
- C#基础---Queue(队列)的应用
Queue队列,特性先进先出. 在一些项目中我们会遇到对一些数据的Check,如果数据不符合条件将会把不通过的信息返回到界面.但是对于有的数据可能会Check很多条件,如果一个数据一旦很多条件不 ...
- [LeetCode] Queue Reconstruction by Height 根据高度重建队列
Suppose you have a random list of people standing in a queue. Each person is described by a pair of ...
- [LeetCode] Implement Queue using Stacks 用栈来实现队列
Implement the following operations of a queue using stacks. push(x) -- Push element x to the back of ...
随机推荐
- Linux查看进程的4种方法
转至:https://www.cnblogs.com/hml-blog-com/p/11558369.html 进程是在 CPU 及内存中运行的程序代码,而每个进程可以创建一个或多个进程(父子进程). ...
- Go之Logrus用法入门
Go之Logrus用法入门 Logrus是Go (golang)的结构化日志程序,完全兼容标准库的API日志程序. Logrus is a structured logger for Go (gola ...
- 01-Servlet 回顾
通过url访问资源有三个步骤: 接收请求 处理请求 响应请求 web服务器:将某个主机上的资源映射为一个URL供外界访问,完成接收和响应请求 servlet容器:存放着servlet对象(由程序员编程 ...
- 【python】kNN基础算法--推荐系统
虽然把text转成全部量化是可以的,但是还是需要把text转成numpy的形式(这个是必须掌握的) 在将数据输入到分类器之前,必须将待处理数据的格式改变为分类器可以接受的格式. 数据规范化.数据归一化 ...
- redis php使用实例
redis的操作很多的,以前看到一个比较全的博客,但是现在找不到了.查个东西搜半天,下面整理一下php处理redis的例子,个人觉得常用一些例子.下面的例子都是基于php-redis这个扩展的. 1, ...
- Chrome浏览器打开图标显示空白
复制下面命令存到.bat 文件中,并允许bat文件 taskkill /f /im explorer.exeattrib -h -i %userprofile%\AppData\Local\IconC ...
- Chartjs 初体验
I 官网 https://www.chartjs.org/ https://chartjs.bootcss.com/ 中文网址 简单易上手,支持的Chart 类型:折线图,饼图,柱状,雷达图,网状图 ...
- Failed to execute "C:\learn\C\程序练习\1.exe": Error 0: 操作成功完成。 请按任意键继续. . .问题解决
在DEV中编译运行时出现以上提示,原因是该文件被杀毒软件隔离了,认为它是病毒文件 解决办法,找到该文件进行恢复
- Linux指令入门-系统管理(云小宝码上送祝福,免费抽iphone13任务)
码上送祝福,带云小宝回家 做任务免费抽iphone13,还可得阿里云新春限量手办 日期:2021.12.27-2022.1.16 云小宝地址:https://developer.aliyun.com/ ...
- Nextcloud fpm 版在 Dokcer 下安装踩坑
安装 首先到 https://registry.hub.docker.com/_/nextcloud 获取 Nextcloud 的示例 docker-compose version: '2' volu ...