截柱子
来源:互联网 发布:harris角点检测算法 编辑:程序博客网 时间:2024/04/26 20:23
题目描述
有n根柱子竖在地面上排成一排,每根柱子都可以从顶端截下一段以此来调整为任意高度,但是,柱子被截后剩下的高度必须是大于等于1的整数。相邻两根柱子的距离为w。现在要用一条绳子从第一根柱子的端点按顺序经过每一根柱子的端点到达最后一根绳子的端点,求这根绳子最长需要用多长?
输入格式
第一行输入一个数T,表示测试数据个数,对于每个测试数据,第一行输入两个整数n,w,分别表示柱子个数和相邻两根柱子的距离,第二行输入n个整数,分别表示每根柱子的初始高度
数据范围:
0<n<=100
0<w<=10
0<每根柱子的初始高度<=100
输出
对于每个测试数据,输出一个数,表示绳子最长需要多长,答案保留3位小数。
样例输入
2
3 2
3 3 3
4 10
1 1 1 1
样例输出
5.65730.000
//1780 kb 0 ms#include <cstdio>#include <iostream>#include <cstring>#include <cmath>#include <algorithm>using namespace std;int h[105];double dp[105][105];inline double dis(int x, int y){ return sqrt(x*x + y*y);}int main(){ int T; scanf("%d", &T); while(T--){ int n, w; scanf("%d%d", &n, &w); for(int i=0; i<n; i++) scanf("%d", &h[i]); memset(dp, 0, sizeof(dp)); for(int i=1; i<=n-1; i++){ for(int j=1; j<=h[i]; j++){ for(int k=1; k<=h[i-1]; k++){ dp[i][j] = max(dp[i][j], dp[i-1][k] + dis(j-k, w)); } } } double res = 0; for(int j=1; j<=h[n-1]; j++){ if(dp[n-1][j] > res) res = dp[n-1][j]; } printf("%.3lf\n", res); } return 0;}
0 0
- 截柱子
- 柱子上标注,柱子之间间距
- flex 彩虹柱子
- echarts-多柱子柱状图
- echarts-多柱子柱状图
- 墨子怒耕柱子
- Extjs设置柱状图柱子颜色和每条柱子颜色
- highchart 柱图设置 柱子宽度 柱子间距
- (3)Jfreechart柱状图自定义柱子颜色以及柱子的方向
- unity2D小鸟飞过柱子小游戏
- ssoj2867淘淘的柱子朋友
- echats 柱状图柱子颜色设定。
- JfreeChart根据柱子实际高度显示值在柱子里面,或是在柱子外面
- jfreechart 实现单组柱子不同颜色
- 改变ireport中柱状图的柱子宽度
- 调整动态条形图的柱子宽度
- 设定JFreeChart柱子上面的颜色
- 统计图-FLASH统计图如何设计柱子颜色
- MFC以资源形式实现多语言版本
- java反射机制reflect 分析Object对象
- lighttpd
- jquery的基本知识点(函数和操作)
- Android 4.4 源码中的关键代码路径
- 截柱子
- hadoop 2.4的编译安装.
- 使用VPN收看地理阻止美国电视节目在线
- Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向
- linux下的xml操作详解
- 你需要知道的关于VPN技术
- 安卓开发中通过图片的绝对路径找到图片的URI
- [水]ZOJ1154
- 快速排序算法分析、代码实现