题目大意:背景大概是个资本家剥削工人剩余价值的故事。。。。有一块木板,要把它切成几个长度,切一次的费用是这整块被切木板的长度,例如将一个长度为21的木板切成2和19两块费用为21,切成两块的长度及顺序是可以自己定的,问最小费用是多少

思路:一个很明显的贪心思路是每次将最长切下来,这样后续切割就不会用到这根最长的木板,结果也就是最优的了。具体操作的时候可以倒过来想:有一系列切完的小木板,要将它们合并成一块大木板,费用为合并完后那个大木板的长度,问最小费用。这样,每次合并最小木板的思路就跃然纸上了-----每次将小木板中最小的两块木板合并,更新答案,将合并后的木板加到原来的木板中,由于每次要更新最小值,因此采取堆优化应该是不错的方式。

#include<cstdio>

#include<string.h>

#include<iostream>

using namespace std;

int heap[50009]={0},last=1;

void swap(int i,int j)

{

int temp=heap[i];heap[i]=heap[j];heap[j]=temp;

}

void add(int value)

{

int i=last;

heap[last++]=value;

while(heap[i]<heap[i>>1]&& i>1)

{

swap(i,i>>1);

i=i>>1;

}

}

void del()

{

heap[1]=heap[--last];

heap[last]=0;

int i=1,next;

next=heap[(i<<1)]<heap[(i<<1)+1]?i<<1:(i<<1)+1;

if ((i<<1)+1>=last)next=i<<1;

while(heap[i]>heap[next] && next<last)

{

swap(i,next);

i=next;

if ((i<<1)+1>=last)next=i<<1;elsenext=heap[(i<<1)]<heap[(i<<1)+1]? i<<1:(i<<1)+1;

}

}

int main()

{

int n,t;

__int64 ans=0;

scanf("%d",&n);

for(int i=1;i<=n;i++)

{

scanf("%d",&t);add(t);

}

for(int i=1;i<=n-1;i++)

{

int top=heap[1];del();

top+=heap[1];ans+=top;

del();add(top);

}

printf("%I64d\n",ans);

return 0;

}

调试结果:1WA 原因:heap写错了贡献了一次wa

自测数据:input:

10

56 123 7 123 41 4 1 33 54 78 64

Output:

1462

最新文章

  1. nginx源码分析之模块初始化
  2. SSIS自定义数据流组件开发(血路)
  3. Linux网络参数设置
  4. 数据库---MySQL练习题及答案
  5. Objective-C 在Categroy中创建属性(Property)
  6. $q服务的API详解
  7. Java-装饰模式(转)
  8. hdu 2051 Bitset (java)
  9. JavaScript的function参数的解释
  10. SpringMVC源码情操陶冶-ResourcesBeanDefinitionParser静态资源解析器
  11. Docker 备份、恢复、迁移数据卷
  12. Delphi线程定时器TThreadedTimer及用法--还有TThreadList用法可以locklist
  13. Confluence 6 后台中的选择站点首页
  14. Hadoop Avro支持多输入AvroMultipleInputs
  15. Git 子模块 - submodule(转)
  16. python2.x 到 python3.x 中“url”部分变化
  17. 一个网页的对象抽象之路——po编程 (干货,Java自动化测试)
  18. FileStream实现多线程断点续传(已封装)
  19. pycharm连接服务器
  20. spring boot 2.0.3+spring cloud (Finchley)5、路由网关Spring Cloud Zuul

热门文章

  1. Oozie的作用
  2. C#中Json的简单处理
  3. MySQL系列:隐式类型转化可能带来的坑
  4. DDR SDRAM
  5. 做OJ项目时遇到的坑
  6. Redis学习笔记(二)字符串进阶
  7. mysqldump 使用详解
  8. 利用MSF实现三层网络的一次内网渗透
  9. aapt环境变量配置
  10. cocos2dx 接入bugly 报错 Fail to get class by NSClassFromString(BuglyAgent)