POJ 3253 Fence Repair
2015-08-11 21:15
369 查看
题目链接:
http://poj.org/problem?id=3253
解题思路:
朴素方法代码又长,而且又不易懂。。。其实只需从板的集合里取出最短的两块,并且把长度为两块板长度之和的板加入集合中即可,因此如果使用优先队列就可以高效地实现。时间复杂复为O(N log N).
AC代码(朴素方法):
AC代码(优先队列):
http://poj.org/problem?id=3253
解题思路:
朴素方法代码又长,而且又不易懂。。。其实只需从板的集合里取出最短的两块,并且把长度为两块板长度之和的板加入集合中即可,因此如果使用优先队列就可以高效地实现。时间复杂复为O(N log N).
AC代码(朴素方法):
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; typedef long long ll; int n,a[20005]; void solve(){ ll ans = 0; //直到计算到木板为1快时为止 while(n > 1){ //求出最短的板mii1和次短的板mii2 int mii1 = 0,mii2 = 1; if(a[mii1] > a[mii2]) swap(mii1,mii2); for(int i = 2; i < n; i++){ if(a[i] < a[mii1]){ mii2 = mii1; mii1 = i; } else if(a[i] < a[mii2]){ mii2 = i; } } //将两块板拼合 int t = a[mii1] + a[mii2]; ans += t; if(mii1 == n-1) swap(mii1,mii2); a[mii1] = t; a[mii2] = a[n-1]; n--; } printf("%lld\n",ans); } int main(){ while(~scanf("%d",&n)){ for(int i = 0; i < n; i++) scanf("%d",&a[i]); solve(); } return 0; }
AC代码(优先队列):
<pre name="code" class="cpp">#include <iostream> #include <cstdio> #include <queue> #include <algorithm> using namespace std; typedef long long ll; int n,x; priority_queue<int,vector<int>,greater<int> > q; void solve(){ ll ans = 0; while(q.size() > 1){ int l1 = q.top(); q.pop(); int l2 = q.top(); q.pop(); //printf("%d %d\n",l1,l2); ans += l1+l2; q.push(l1+l2); } printf("%lld\n",ans); } int main(){ while(~scanf("%d",&n)){ while(!q.empty()) q.pop(); for(int i = 0; i < n; i++){ scanf("%d",&x); q.push(x); } solve(); } return 0; }
相关文章推荐
- 配置 Windows 下的 nodejs C++ 模块编译环境 安装 node-gyp
- Chrome调试时提示angular.min.js.map 404 (Not Found)问题的解决
- JavaScript设计模式与开发实践——读书笔记1.高阶函数(上)
- jQuery验证控件jquery.validate.js使用说明
- 6最好的之一 HTML5/CSS3 演示(PPT)框架
- markdown学习笔记
- jQuery的AJax异步访问
- atitit。html css框架Bootstrap  Foundation的比较与不同 attilax大总结
- atitit。html css框架Bootstrap Foundation的比较与不同 attilax大总结
- atitit。html css框架Bootstrap Foundation的比较与不同 attilax大总结
- css3 选择器(三)
- 如何读取本地的json数据
- React Native 简介:用 JavaScript 搭建 iOS 应用 (1)
- React Native 简介:用 JavaScript 搭建 iOS 应用 (1)
- 前端学习的那些事儿
- 30-CSS-02-CSS(和html结合的方式三四)
- 30-CSS-03-CSS(基本选择器&优先级)
- Jsoup解析Html教程
- 30-CSS-01-CSS(概述&和html结合的方式一二)
- JSON数据解析