POJ 1862
2016-05-16 00:07
465 查看
今天的最后一道题了。。
23:59
在POJ上活捉刷题队长一只。
![](http://img.blog.csdn.net/20160516000309914)
中间就隔了仨人
呃呃说正事
题意:
给几个数,合并的代价是 2*sqrt(x1*x2) 问n个数合并的代价最小值。
证明(Discuss里的):
假设有a,b,c 且结果是r
则 r = 2*sqrt(2*sqrt(a*b)*c)
则 r^2/8 = sqrt(a*b*c*c);
若要 r 最小 则 c 一定是 a,b,c 中最小的 所以就是不断地取两个大数相乘喽~~
再说一遍:STL大法好。(其实这道题sort一下也行,当时没有注意到这点)
23:59
在POJ上活捉刷题队长一只。
中间就隔了仨人
呃呃说正事
题意:
给几个数,合并的代价是 2*sqrt(x1*x2) 问n个数合并的代价最小值。
证明(Discuss里的):
假设有a,b,c 且结果是r
则 r = 2*sqrt(2*sqrt(a*b)*c)
则 r^2/8 = sqrt(a*b*c*c);
若要 r 最小 则 c 一定是 a,b,c 中最小的 所以就是不断地取两个大数相乘喽~~
再说一遍:STL大法好。(其实这道题sort一下也行,当时没有注意到这点)
// by Sirius_Ren #include <queue> #include <cmath> #include <cstdio> using namespace std; int main(){ priority_queue<double>pq; register double xx,yy,n; scanf("%lf",&n); while(n--)scanf("%lf",&xx),pq.push(xx); xx=pq.top();pq.pop(); while(!pq.empty())yy=pq.top(),pq.pop(),xx=2*sqrt(xx*yy); printf("%.3lf",xx); }
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- 用VBScript写合并文本文件的脚本
- oracle列合并的实现方法
- 使用BAT一句话命令实现快速合并JS、CSS
- Lua和C语言的交互详解
- SQL 合并多行记录的方法总汇
- C#实现简单合并word文档的方法
- C#自适应合并文件的方法
- Node.js实现JS文件合并小工具
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法