https://www.luogu.org/problem/show?pid=1334

题目描述

瑞瑞想要亲自修复在他的一个小牧场周围的围栏。他测量栅栏并发现他需要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个单位的能量,是消耗能量最小的方案。

 #include <algorithm>
#include <iostream>
#include <cstdio>
#define maxn 20005
#define LL long long using namespace std; LL n,x,size,ans,cnt;
LL heap[maxn]; void put(LL x)
{
LL now,next;
size++;
heap[size]=x;
now=size;
while(now>)
{
next=now/;
if(heap[next]<=heap[now]) break;
swap(heap[next],heap[now]);
now=next;
}
} void pop()
{
LL now=,next;
heap[]=heap[size];
size--;
while(now*<=size)
{
next=now*;
if(next<size&&heap[next]>heap[next+]) next++;
if(heap[now]<=heap[next]) break;
swap(heap[now],heap[next]);
now=next;
}
} int main()
{
scanf("%lld",&n);
for(int i=;i<=n;i++)
{
cin>>x;
put(x);
}
for(int i=;i<n;i++)
{
cnt=heap[]; pop();
cnt+=heap[]; pop();
ans+=cnt;
put(cnt);
}
printf("%lld",ans);
return ;
}

手打 小根堆 66ms / 16.17MB 代码:0.82KB

 #include <iostream>
#include <cstdio>
#include <queue>
#define maxn 20005
#define LL long long using namespace std; LL n,x,size,ans,cnt;
priority_queue<LL,vector<LL>,greater<LL> >que; int main()
{
scanf("%lld",&n);
for(int i=;i<=n;i++)
{
cin>>x;
que.push(x);
}
for(int i=;i<n;i++)
{
cnt=que.top(); que.pop();
cnt+=que.top(); que.pop();
ans+=cnt;
que.push(cnt);
}
printf("%lld",ans);
return ;
}

优先队列 189ms / 16.4MB 代码:0.44KB

P1334 瑞瑞的木板 洛谷的更多相关文章

  1. 洛谷【P1090】合并果子&&洛谷【P1334】瑞瑞的木板

    浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 合并果子题目传送门:https://www.luogu.org/problemnew/show/P1 ...

  2. 洛谷 P1334 瑞瑞的木板

    P1334 瑞瑞的木板 题目描述 瑞瑞想要亲自修复在他的一个小牧场周围的围栏.他测量栅栏并发现他需要N(1≤N≤20,000)根木板,每根的长度为整数Li(1≤Li≤50,000).于是,他神奇地买了 ...

  3. 洛谷 P1334 瑞瑞的木板==P2664 【题目待添加】

    题目描述 瑞瑞想要亲自修复在他的一个小牧场周围的围栏.他测量栅栏并发现他需要N(1≤N≤20,000)根木板,每根的长度为整数Li(1≤Li≤50,000).于是,他神奇地买了一根足够长的木板,长度为 ...

  4. P1334 瑞瑞的木板

    题目描述 瑞瑞想要亲自修复在他的一个小牧场周围的围栏.他测量栅栏并发现他需要N(1≤N≤20,000)根木板,每根的长度为整数Li(1≤Li≤50,000).于是,他神奇地买了一根足够长的木板,长度为 ...

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

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

  6. 【堆】【洛谷例题】p1090 p1334 p1177

    (都是比较简单的典型的而且都是小根堆的例题) p1090 合并果子[传送门] 算法分析:要尽量使用最小的体力合并完所有果子,那么每次合并的两堆果子应该是这所有堆中最小的一个(因为越先合并的堆要被算的次 ...

  7. 【u009】瑞瑞的木板

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

  8. [洛谷日报第39期]比STL还STL?——pbds

    [洛谷日报第39期]比STL还STL?——pbds   洛谷科技 发布时间:18-08-3116:37 __gnu_pbds食用教程 引入 某P党:“你们C++的STL库真强(e)大(xin),好多数 ...

  9. P4158 [SCOI2009]粉刷匠(洛谷)

    今天A了个紫(我膨胀了),他看起来像个贪心一样,老师说我写的是dp(dp理解不深的缘故QWQ) 直接放题目描述(我旁边有个家伙让我放链接,我还是说明出处吧(万一出处没有了)我讲的大多数题目都是出自洛谷 ...

随机推荐

  1. Docker Java+Tomcat 环境搭建

    软件环境:jdk.tomcat.docker.centos.虚拟机 首先,您要准备一个 CentOS 的操作系统,虚拟机也行.总之,可以通过 Linux 客户端工具访问到 CentOS 操作系统就行. ...

  2. 使用Kotlin,抛弃findViewById

    有没有觉得Android的findViewById挺烦人的.使用Kotlin可以让你彻底抛弃这个烦恼 步骤1.在build.gradle(Module:app)中添加如下一句话 这个在老一点版本的An ...

  3. 阿里云设置指定ip访问实例

    添加安全组规则 添加允许访问的外网IP,优先级设置为1,并将所有ip设置为拒绝访问,优先级设置为2. 参考地址: https://help.aliyun.com/document_detail/254 ...

  4. java规范与标准?

    所谓规范,即指由很多人同时遵守的行为或理论. java的规范并不是指其中一种,而是有很多种,比如java编码规范,java命名规范,java虚拟机规范等等,甚至于一个编码规范都有很多种,不同的公司.组 ...

  5. 迅为iTOP-4412物联网开发板入门学习高手进阶项目开发超树莓派

    免费视频教程: 为初学者精心录制的整套视频教程全部免费,随IT技术发展而不断增添的视频教程仍然免费!一支有经验的工程师团队会始终成为您的后盾. 项目实战---全开源: 手机远程控制开发板 门禁系统 W ...

  6. ubuntu 安装virt-manager

    sudo apt-get install qemu-kvm libvirt-bin virt-manager bridge-utils

  7. 《Java程序设计》课程试题

    < Java程序设计 >课程试题 一.单项选择题(20题:每题2分,共40分) 1.若数组a定义为int[][]a=new int[3][4],则a是___. A)一维数组 B)二维数组 ...

  8. GRPC在NET上的应用

    GRPC是什么? GRPC是一个开源RPC框架,于2015年3月开源,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于Protobuf 3.0(Protocol Buffer ...

  9. vue开发 - 根据vue-router的meta动态设置html里标签的内容

    路由文件 :router/index.js import Vue from 'vue'import Router from 'vue-router'import index '@/view/index ...

  10. 用PHP怎么删除某目录下指定的一个文件

    举个tp框架的例子 $User = M("message"); $a = $User->]['url']; unlink($url); $User->delete($i ...