poj 1905 Expanding Rods (数学 计算方法 二分)
题目链接
题意:将长度为L的棒子卡在墙壁之间。现在因为某种原因,木棒变长了,因为还在墙壁之间,所以弯成了一个弧度,现在求的是弧的最高处与木棒原先的地方的最大距离。
分析:
下面的分析是网上别人的分析:
设弦长为L0(即原长),弧长为L1=(1+n*C)*l0,目标值为h,半径为R,弧所对圆心角为2θ(弧度制)。
可以得到以下方程组:
圆的弧长公式:L1=2θR
三角函数公式:L0=2*R*sinθ,变换得θ=arcsin(L0/(2*R))
勾股定理:R^2=(R-h)^2+(0.5*L0)^2,变换得L0^2+4*h^2=8*h*R
合并①②式得到
L1=2*R*arcsin(L0/(2*R))
半径R可以由③式变换得到
R=(L0^2+4*h^2)/(8*h)
可以用二分枚举h的值,计算出R和L1,与题目中L1进行比较。
1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cmath> 5 #include <cstdio> 6 #include <vector> 7 #include <algorithm> 8 #define LL long long 9 using namespace std; 10 const double eps = 1e-8; 11 12 int main() 13 { 14 double l0, n, c, l1, l2, r; 15 double high, low, mid; 16 while(cin>>l0>>n>>c) 17 { 18 if(l0==-1&&n==-1&&c==-1) break; 19 l1 = (1+n*c)*l0; 20 low = 0; high = 0.5*l0; 21 while(high-low>eps) 22 { 23 mid = (low+high)/2; 24 r = (l0*l0 + 4*mid*mid)/(8*mid); 25 l2 = 2*r*asin(l0/(2*r)); 26 if(l1 < l2) high = mid; 27 else low = mid; 28 } 29 mid = (low+high)/2; 30 printf("%.3lf\n", mid); 31 } 32 return 0; 33 }
转载于:https://www.cnblogs.com/bfshm/p/3868438.html
poj 1905 Expanding Rods (数学 计算方法 二分)相关推荐
- poj 1905 Expanding Rods(二分)
题目:http://poj.org/problem?id=1905 题意:看图就明白了... 杆原长为L,受热膨胀弯曲后的长度为 L'=(1+n*C)*L,求中心的移动的距离h: 思路:推出两个公式: ...
- poj 1905 Expanding Rods 二分
1 /** 2 题解晚上写 3 **/ 4 #include <iostream> 5 #include <math.h> 6 #include <algorithm&g ...
- A - Expanding Rods POJ - 1905(二分)
A - Expanding Rods POJ - 1905(二分) 题目 Problem Description When a thin rod of length L is heated n deg ...
- POJ - 1905 (几何+二分)
POJ - 1905 (几何+二分) 题目正文如下: When a thin rod of length L is heated n degrees, it expands to a new leng ...
- 工程数学 计算方法 第五章 数值积分
工程数学 计算方法 第五章 数值积分 数值积分 数值微分 微分 差商法 原理 误差分析 优化:变步长算法 插值法 数值积分 机械求积公式 插值型数值积分 代数精度⭐ 节点等距分布 复合求积 复合求积基 ...
- POJ 2018 Best Cow Fences (二分答案构造新权值 or 斜率优化)
$ POJ~2018~Best~Cow~ Fences $(二分答案构造新权值) $ solution: $ 题目大意: 给定正整数数列 $ A $ ,求一个平均数最大的长度不小于 $ L $ 的子段 ...
- LeetCode-878. 第 N 个神奇数字【数学,二分查找,找规律】
LeetCode-878. 第 N 个神奇数字[数学,二分查找,找规律] 题目描述: 解题思路一:二分答案+容斥原理.给定一个上下界,然后依次增大下界或者减小上界,直到只剩一个答案.容斥原理是,加上两 ...
- Expanding Rods(二分)
http://poj.org/problem?id=1905 题意:已知一根线的长度L,受温度影响膨胀后的弧长s = (1+n*c)*L,求膨胀后与膨胀前的最大距离h. 思路:二分枚举h,通过推出的公 ...
- [二分查找变形]弯曲的木杆(POJ 1905)
这题很有意思,除了一般的程序知识,还用了数学的东西.推导了一些公式什么的. 这次用了两种方法做,层层深入,希望能让大家体会到代码的改良过程 第一步: #include <iostream> ...
- POJ - 2002 Squares 数正方形【二分】【哈希表】
Squares POJ - 2002 题意 平面上有N个点,任取4个点,求能组成正方形的不同组合方式有多少种:相同的四个点,不同顺序构成的正方形视为同一正方形 分析 做法1 先枚举两个点,通过计算得到 ...
最新文章
- 阿里程序员35岁P7!4年了晋升无望!明年股票拿完,年包腰斩!世界那么大,要不要去看看?...
- 詹金斯的Maven报告
- 在线画 有穷状态自动机 的软件_怎么画思维导图?不用下载软件,在线就能操作...
- 动态代理Java实现
- Nature:全球掠夺性期刊已超过15500种
- C语言小白——数组与字符串
- Android之蓝牙开发浅析
- r语言ggplot画两条曲线_R语言作图——Line plot with error
- C#图片处理之: 锐化
- SPring cloud (3)A Ribbon 负载均衡 配置初步
- python基础判断题汇总_python基础 判断题
- Linux内核学习笔记一
- gitbook 配置
- .Net C# 微信APP支付的开发步骤
- 如何在html中插入带圈数字,Excel2013中带圈数字怎么输入
- hibernate官网下载
- 安装打印机提示未能添加服务器,打印机未能链接到服务器
- 格力董明珠还想再赌五年 雷军:可以试一下
- 手机python怎么安装turtle_Python3 turtle安装和使用教程
- python海龟作图好看图案_海龟作图---用Python绘图
热门文章
- hive获取本周第几天
- Spark.shuffle.io.maxRetries参数
- 实现左侧固定宽度, 右侧自适应的两栏布局常见方法
- PostgreSQL Logical Replication
- 亚马逊 在线测试题目 amazon (变种的)三叉树的最近公共祖先问题
- CentOS 5.X MySQL5.5.35 编译的bug
- 再探java基础——对面向对象的理解(1)
- 怎么把我的文档C盘的路径改到E盘啊
- 计蒜客NOIP2017提高组模拟赛(三)day2-小区划分
- ubuntu命令整理中