博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
优先队列 POJ 3253 Fence Repair
阅读量:5922 次
发布时间:2019-06-19

本文共 1156 字,大约阅读时间需要 3 分钟。

 

题意:一块木板按照某个顺序切成a[1], a[2]...a[n]的长度,每次切都会加上该两段木板的长度,问选择什么顺序切能使得累加和最小

分析:网上说这是。很容易想到先切掉最长的,反过来也就是相当于每次取最短的两块合并成一块,直到最后剩下原来的一块,优先队列实现

 

代码:

/************************************************* Author        :Running_Time* Created Time  :2015/9/14 星期一 08:51:15* File Name     :POJ_3253.cpp ************************************************/#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define lson l, mid, rt << 1#define rson mid + 1, r, rt << 1 | 1typedef long long ll;const int N = 2e4 + 10;const int INF = 0x3f3f3f3f;const int MOD = 1e9 + 7;int a[N];int main(void) { int n; while (scanf ("%d", &n) == 1) { for (int i=1; i<=n; ++i) scanf ("%d", &a[i]); priority_queue
, greater
> Q; for (int i=1; i<=n; ++i) Q.push (a[i]); ll ans = 0; while (Q.size () > 1) { int l1 = Q.top (); Q.pop (); int l2 = Q.top (); Q.pop (); ans += l1 + l2; Q.push (l1 + l2); } printf ("%I64d\n", ans); } return 0;}

  

转载于:https://www.cnblogs.com/Running-Time/p/4806277.html

你可能感兴趣的文章
3D 高逼格动画制作
查看>>
centos6.6学习笔记:安装PHP5.5
查看>>
网络安全态势可视化
查看>>
数据挖掘 十大算法(持续更新)
查看>>
基于react开发的时间选择组件(TimePicker)
查看>>
浏览器工作过程详解(译)(一)
查看>>
使用 Electron 创建和管理窗体
查看>>
Oracle回应用户锁定,自治数据库是更好选择
查看>>
微软推出Windows Sandbox:可安全运行任何应用的一次性VM\n
查看>>
51信用卡 Android自动埋点实践
查看>>
PHP Session可能会引起并发问题
查看>>
AI犯错谁之过?切勿盲目相信之
查看>>
JVM源码分析之FinalReference完全解读
查看>>
如何利用PostgreSQL的延迟复制实现灾备
查看>>
Google Puppeteer加入到headless Chrome的工具行列
查看>>
Connect to broadband services in Chandigarh
查看>>
docker运行jenkins
查看>>
Facebook开源ptr:在Python环境中并行运行单元测试
查看>>
埃森哲、亚马逊和万事达卡抱团推出的区块链项目有何神通?
查看>>
Swift 烧脑体操(五)- Monad
查看>>