题目描述

瑞瑞想要亲自修复在他的一个小牧场周围的围栏。他测量栅栏并发现他需要N(1≤N≤20,000)根木板,每根的长度为整数Li(1≤Li≤50,000)。于是,他神奇地买了一根足够长的木板,长度为所需的N根木板的长度的总和,他决定将这根木板切成所需的N根木板。(瑞瑞在切割木板时不会产生木屑,不需考虑切割时损耗的长度)瑞瑞切割木板时使用的是一种特殊的方式,这种方式在将一根长度为x的模板切为两根时,需要消耗x个单位的能量。瑞瑞拥有无尽的能量,但现在提倡节约能量,所以作为榜样,他决定尽可能节约能量。显然,总共需要切割N-1次,问题是,每次应该怎么切呢?请编程计算最少需要消耗的能量总和。

输入输出格式

输入格式:

第一行: 整数N,表示所需木板的数量

第2到N+1行: 每行为一个整数,表示一块木板的长度

输出格式:

一个整数,表示最少需要消耗的能量总和

输入输出样例

输入样例#1:

3
8
5
8

输出样例#1:

34

说明

将长度为21的木板,第一次切割为长度为8和长度为13的,消耗21个单位的能量,第二次将长度为13的木板切割为长度为5和8的,消耗13个单位的能量,共消耗34个单位的能量,是消耗能量最小的方案。

小根堆

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<queue>
 6 #define lli long long int
 7 using namespace std;
 8 void read(lli & n)
 9 {
10     char c='+';lli x=0;lli flag=0;
11     while(c<'0'||c>'9')
12     {
13         c=getchar();
14         if(c=='-')flag=1;
15     }
16
17     while(c>='0'&&c<='9')
18         x=x*10+c-48,c=getchar();
19     if(flag==1)n=-x;
20     else n=x;
21 }
22 priority_queue<lli,vector<lli>,greater<lli> >q;
23 lli n,p;
24 lli ans;
25 int main()
26 {
27     read(n);
28     for(int i=1;i<=n;i++)
29     {
30         read(p);
31         q.push(p);
32     }
33     for(int i=1;i<=n-1;i++)
34     {
35         lli x=q.top();
36         q.pop();
37         lli y=q.top();
38         q.pop();
39         x=x+y;
40         ans+=x;
41         q.push(x);
42     }
43     cout<<ans;
44     return 0;
45 }

转载于:https://www.cnblogs.com/zwfymqz/p/7044603.html

P1334 瑞瑞的木板相关推荐

  1. 【u009】瑞瑞的木板

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 瑞瑞想要亲自修复在他的一个小牧场周围的围栏.他测量栅栏并发现他需要N(1≤N≤20,000)根木板,每 ...

  2. 洛谷P1333 瑞瑞的木棍(欧拉回路)

    题目描述 瑞瑞有一堆的玩具木棍,每根木棍的两端分别被染上了某种颜色,现在他突然有了一个想法,想要把这些木棍连在一起拼成一条线,并且使得木棍与木棍相接触的两端颜色都是相同的,给出每根木棍两端的颜色,请问 ...

  3. [洛谷]P1334 瑞瑞的木板

    反向考虑   考虑成用最小单位的那些木板合成一个长度为n的最小体 #include<bits/stdc++.h> using namespace std; #define int long ...

  4. 程序设计思维与实践 Week15 实验 D-瑞瑞爱上字符串

    题目链接:D-瑞瑞爱上字符串 题目描述: 瑞瑞最近迷上了字符串,因此决定出一个字符串的题. 给定两个正整数 N.K,考虑所有由 N - 2 个 a 和 2 个 b 组成的字符串,要求输出其中字典序第 ...

  5. 堆——以洛谷p3378,p1334,p1628,p1878为例

    堆 堆的五个基本操作: 1.在集合中插入一个数      heap[++size]=x  ;  up[size] 2.求集合当中的最小值      heap[1] 3.删除最小值           ...

  6. 2017-2018年度刷题记录

    2018暑假刷题1: T1.CF6A Triangle (#模拟 -1.4) T2.CF59A Word(#模拟 -1.5) T3.[洛谷]P2772 寻找平面上的极大点(#贪心 -1.4) T4.[ ...

  7. 寒假训练八(优先队列)2020.02.14(7题)

    寒假训练八(优先队列)id:530 Problem:A 买饭-优先队列 Description 林大食堂非常拥挤,得排队买饭,陈老师也是一样的! 有n个人在一个卖饭窗口前排队买饭,假如每个人买饭的时间 ...

  8. 第十五届全国大学生智能车全国总决赛获奖信息-华南赛区

    第十五届全国大学生智能车竞赛 全国总决赛获奖信息 华南赛区 序号 学校 队伍 组别 奖项 姓名 类别 1 武汉大学 珞珈-DeepLoop AI电磁组 一等奖 朱俊宇 参赛学生 2 武汉大学 珞珈-D ...

  9. 配置Linux两节点SSH密钥信任

    首先感谢兄弟"瑞瑞"提供资料 1. 生成两节点Oracle用户SSH密钥 Racnode1 [root@racnode1 ~]#su - oracle--------------- ...

最新文章

  1. 爬虫之手机APP抓包教程-亲测HTTP和HTTPS均可实现
  2. Python可视化应用实战-三万字长文(建议收藏)matplotlib可视化实例,实操有效
  3. html文字字号不改变,如何在不改变div大小的情况下更改HTML / css中的字体大小?...
  4. JUST技术:提升基于GPS轨迹的路网推测精确度
  5. php鼠标点击图片后换图片,鼠标滑过改变图片
  6. 如何绘制逻辑图 — 9.模型的分类
  7. 【100题】第十四题(数组中找两个数使其和等于输入数)
  8. zabbix第一篇:zabbix安装及使用
  9. Vue单文件项目自定义组件入门
  10. python 遍历内嵌tuple_python内置数据结构list、set、dict、tuple(一)
  11. 父shell和子shell
  12. 2B: 怎么把黑科技卖给顶级金融机构? | 甲子光年
  13. vim插件介绍(一)之Tabular
  14. 2022-2028全球姿势矫正器行业调研及趋势分析报告
  15. php判断字符串长度 strlen()与mb_strlen()函数
  16. android中常见对话框之一AlertDialog
  17. Elasticsearch升级1.5版本暴露jdk的bug
  18. Educational Codeforces Round 69 (Rated for Div. 2) D. Yet Another Subarray Problem(dp 最大子区间)
  19. HTML基础学习——定位
  20. VBA用字典实现分类汇总(一)

热门文章

  1. 【Python学习】 - sklearn - PCA降维相关
  2. 【牛客 - 330C】Applese 走迷宫(bfs)
  3. 【CodeForces-1041C】Coffee Break(贪心,STL,set二分维护,题意难,有坑,SJ题,构造)(知识点总结)
  4. php百度搜索框代码,基于jquery的仿百度搜索框效果代码_jquery
  5. python 列表转图结构_Python读取网络(图)边列表数据进而转化为邻接矩阵
  6. jquery工具箱旋转动画效果
  7. js正则表达式限制文本框只能输入数字,小数点,英文字母
  8. git/github使用完整教程(1)基础
  9. leetcode136 只出现一次的数字
  10. 计算一个人出生了多少天(炸窝)