南昌门户网站建设,h5 网站模板,网上购物app排行榜,logo在线设计生成器小智第一道#xff1a;poj 1905Expanding Rods 题意#xff1a;两道墙#xff08;距离L#xff09;之间架一根棒子#xff0c;棒子受热会变长#xff0c;弯曲#xff0c;长度变化满足公式#xff08; s(1n*C)*L#xff09;#xff0c;求的是弯曲的高度h。 首先来看这个图… 第一道poj 1905Expanding Rods 题意两道墙距离L之间架一根棒子棒子受热会变长弯曲长度变化满足公式 s(1n*C)*L求的是弯曲的高度h。 首先来看这个图 如图蓝色为杆弯曲前长度为L 红色为杆弯曲后长度为s h是所求。 又从图中得到三条关系式; 1 角度→弧度公式 θr 1/2*s 2 三角函数公式 sinθ 1/2*L/r 3 勾股定理 r^2 – ( r – h)^2 (1/2*L)^2 把四条关系式化简可以得到 逆向思维解二元方程组 要求1式的h唯有先求r 但是由于2式是三角函数式直接求r比较困难 因此要用顺向思维解方程组 在h的值的范围内枚举h的值计算出对应的r判断这个r得到的(2)式的右边 与 左边的值S的大小关系 S (1n*C)*L 很显然的二分查找了。。。。。 看代码 1 #includestdio.h2 #includestring3 #includemath.h4 #includestring.h5 #includealgorithm6 #define esp 1e-57 using namespace std;8 int main()9 {
10 double l,n,c,s,h,r;
11 while(scanf(%lf%lf%lf,l,n,c)!EOF)
12 {
13 if(l-1n-1c-1)
14 break;
15 s(1n*c)*l;
16 double low0.0,highl*0.5,mid;
17 while(high-lowesp)
18 {
19 mid(lowhigh)/2;
20 r(4*mid*midl*l)/(8*mid);
21 if(2*r*asin(l/(2*r))s)
22 lowmid;
23 else
24 highmid;
25 }
26 printf(%.3lf\n,mid);
27 }
28 return 0;
29 } 第二题poj 3122 Pie 题意f1个人分n个派。 要求每个人的派的体积一样大且尽量最大每个人的派必须来自同一个派。 二分题千万要注意输入的是朋友的数量f分pie是分给所有人包括自己在内共f1人 下界low0即每人都分不到pie 上界highmaxsize每人都得到整个pie而且那个pie为所有pie中最大的 对当前上下界折中为mid计算如果按照mid的尺寸分pie能分给多少人 求某个pie尺寸为size按照mid的尺寸能够分给的人数就直接size / mid舍弃小数就可以 看代码 #includestdio.h
#includestring
#includemath.h
#includestring.h
#includealgorithm
#define pi 3.14159265359
#define esp 1e-6
using namespace std;
int main()
{int t;int n,f,maxs;double v;double r[10001];double s[10001];scanf(%d,t);while(t--){maxs0.0;int ans0;scanf(%d%d,n,f);f;for(int i0;in;i){scanf(%lf,r[i]);s[i]r[i]*r[i];if(maxss[i])maxss[i];}double low0.0,highmaxs,mid;while(high-lowesp){mid(lowhigh)/2;ans0;for(int i0;in;i){ans(int)(s[i]/mid);}if(ansf)highmid;elselowmid;}printf(%.4lf\n,mid*pi);}return 0;
} 转载于:https://www.cnblogs.com/PJQOOO/p/4250814.html