lightoj 1137 Expanding Rods | 二分+几何

2024-06-12 11:48

本文主要是介绍lightoj 1137 Expanding Rods | 二分+几何,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题意:

一根棍子,受热后长度会改变。L' = (1+n*C)*L

问你受热后棍子的中点距离地面的高度h为多少。

思路:

推公式,

L' = p*r ——p为弧度

r = (L/2)/sin(p/2) 

两式联立,二分p即可。

AC代码:

[cpp]  view plain copy
  1. #include <cstring>  
  2. #include <cstdlib>  
  3. #include <cstdio>  
  4. #include <cmath>  
  5. #include <iostream>  
  6. #include <iomanip>  
  7. using namespace std;  
  8. const double PI = acos(-1.0);  
  9. double l, n, c;  
  10. double tl;  
  11. bool OK(double mid)  
  12. {  
  13.         double tmp = mid/sin(mid/2);  
  14.         if(tmp > tl)    return false;  
  15.         return true;  
  16. }  
  17.          
  18. int main()  
  19. {  
  20.         ios::sync_with_stdio(false);  
  21.         int t,cas = 0;  
  22.         cin>>t;  
  23.         while(t--)  
  24.         {  
  25.                 cin>>l>>n>>c;  
  26.                 tl = 2*l*(1+n*c)/l;  
  27.                 double L = 0, R = PI;  
  28.                 while(R - L > 1e-8)  
  29.                 {  
  30.                         double mid = (L+R)/2;  
  31.                         if(OK(mid))  
  32.                                 L = mid;  
  33.                         else  
  34.                                 R = mid;  
  35.                 }  
  36.                 double l2 = l*(1+n*c);  
  37.                 double h = l2/L*(1-cos(L/2));  
  38.                 cout<<"Case "<<++cas<<": "<<fixed<<setprecision(6)<<h<<endl;  
  39.         }  
  40.         return 0;  
  41. }  

这篇关于lightoj 1137 Expanding Rods | 二分+几何的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054133

相关文章

hdu2241(二分+合并数组)

题意:判断是否存在a+b+c = x,a,b,c分别属于集合A,B,C 如果用暴力会超时,所以这里用到了数组合并,将b,c数组合并成d,d数组存的是b,c数组元素的和,然后对d数组进行二分就可以了 代码如下(附注释): #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<que

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ

uva 10387 Billiard(简单几何)

题意是一个球从矩形的中点出发,告诉你小球与矩形两条边的碰撞次数与小球回到原点的时间,求小球出发时的角度和小球的速度。 简单的几何问题,小球每与竖边碰撞一次,向右扩展一个相同的矩形;每与横边碰撞一次,向上扩展一个相同的矩形。 可以发现,扩展矩形的路径和在当前矩形中的每一段路径相同,当小球回到出发点时,一条直线的路径刚好经过最后一个扩展矩形的中心点。 最后扩展的路径和横边竖边恰好组成一个直

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

XTU 1237 计算几何

题面: Magic Triangle Problem Description: Huangriq is a respectful acmer in ACM team of XTU because he brought the best place in regional contest in history of XTU. Huangriq works in a big compa

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

poj 3104 二分答案

题意: n件湿度为num的衣服,每秒钟自己可以蒸发掉1个湿度。 然而如果使用了暖炉,每秒可以烧掉k个湿度,但不计算蒸发了。 现在问这么多的衣服,怎么烧事件最短。 解析: 二分答案咯。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <c

poj 3258 二分最小值最大

题意: 有一些石头排成一条线,第一个和最后一个不能去掉。 其余的共可以去掉m块,要使去掉后石头间距的最小值最大。 解析: 二分石头,最小值最大。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <c

poj 2594 二分图最大独立集

题意: 求一张图的最大独立集,这题不同的地方在于,间接相邻的点也可以有一条边,所以用floyd来把间接相邻的边也连起来。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <sta