ZJNU 1262 - 电灯泡——中高级

在影子没有到达墙角前,人越远离电灯,影子越长,所以这一部分无需考虑

所以只需要考虑墙上影子和地上影子同时存在的情况

因为在某一状态存在着最值

所以如果以影子总长与人的位置绘制y-x图像

会呈一个类似y=-x^2函数的图像

所以就可以根据三分法找出最值点

 1 /*
 2 Written By StelaYuri
 3 */
 4 #include<stdio.h>
 5 double H,h,D;
 6 double len(double lh){
 7     return lh+D*(h-lh)/(H-lh);
 8 }
 9 int main(){
10     int T;
11     double l,r,m1,m2;
12     scanf("%d",&T);
13     while(T--){
14         scanf("%lf%lf%lf",&H,&h,&D);
15         l=0;r=h;
16         while(r-l>=1e-5){
17             m1=l+(r-l)/3.0;//三分左
18             m2=l+(r-l)/1.5;//三分右
19             if(len(m1)>len(m2))
20                 r=m2;
21             else
22                 l=m1;
23         }
24         printf("%.3lf\n",len(l));
25     }
26
27     return 0;
28 }

原文地址:https://www.cnblogs.com/stelayuri/p/12234830.html

时间: 2024-10-11 18:42:50

ZJNU 1262 - 电灯泡——中高级的相关文章

ZJNU——1262电灯泡(三分题)

Description 小明的房间布置十分简单,只有一个节能灯泡,非常的明亮.每天晚上,他总是在自己的房间里来回踱步,想着如何能赚到更多的钱.有一天,他发现他在房间里的影子长度也随着他的步伐不断变化.突然,他脑中闪过一个念头,影子的最大长度(包括地面和墙壁上的阴影)是多少呢? Input 多组测试数据. 第一行一个整数T(T<=10)表示测试数据个数. 每组三个浮点数,H,h和D,分别如图所示. (10^-2<所有数值<10^3,H-h>=10^-2) 分别用一个空格分开. Out

ZJNU 1310 - 排队——中高级

蒟蒻做法:追踪1号队员,取他回到原来位置需要的次数 1 /* 2 Written By StelaYuri 3 */ 4 #include<stdio.h> 5 int main(){ 6 int T,t,n,ans,x; 7 scanf("%d",&T); 8 for(t=1;t<=T;t++){ 9 scanf("%d",&n); 10 ans=x=1; 11 while(x!=n+1){ 12 if(x>n) 13 x=

ZJNU 1535 - 新建的大楼--中高级

因为从俯视图看,输入输出的视角是从右下方看向左上方的 所以左上角的正方体最有可能被其他正方体挡住 立体上,底部的正方体最有可能被顶部的正方体挡住 所以绘图应该从后往前,从下往上绘制 剩下的就是一大堆计算和判断了 采用的是先绘制出规范的图再与输入的图做对比的方式 1 /* 2 Written By StelaYuri 3 */ 4 #include<stdio.h> 5 #include<string.h> 6 int n,m,ar[21][21]; 7 char ori[200][

ZJNU 1542 - 三角形(续)--中高级

从小到大排序后 先固定一遍,另外两边递增查找 即固定 i,j=i+1,k=j+1 然后让k递增到 a[i]+a[j]<=a[k] 时 此时不能凑成一个三角形 答案增加 k-1-j 组 此时不需要重置 k=j+1 因为 j++ 后 a[j] 会变大 那么在 j~k 之间的所有木棍长度均能再次满足这种 ij 组合 此时只需要把前一个状态的 k 继续往后查找即可 如果 k 查找到了最后,因为i固定,可得 j 不断向后移动,最后能增加的组合有 (n-j)*(n-j-1)/2 组,结束 j 循环,i++

hdu 3047 Zjnu Stadium

Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2109    Accepted Submission(s): 808 Problem Description In 12th Zhejiang College Students Games 2007, there was a new stadium built

HDU 3407.Zjnu Stadium 加权并查集

Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3726    Accepted Submission(s): 1415 Problem Description In 12th Zhejiang College Students Games 2007, there was a new stadium built

Zjnu Stadium(加权并查集)

Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3186    Accepted Submission(s): 1226 Problem Description In 12th Zhejiang College Students Games 2007, there was a new stadium built

中高级PHP开发者应该掌握哪些技术?

中级PHP程序员 1.Linux 能够流畅的使用Shell脚本来完成很多自动化的工作:awk/sed/perl 也操作的不错,能够完成很多文本处理和数据统计等工作:基本能够安装大 部分非特殊的Linux程序(包括各种库.包.第三方依赖等等,比如MongoDB/Redis/Sphinx/Luncene/SVN之类的):了解基 本的Linux服务,知道如何查看Linux的性能指标数据,知道基本的Linux下面的问题跟踪等 2. Nginx:  在第一阶段的基础上面,了解复杂一些的Nginx配置:包括

HDU 3047 Zjnu Stadium 带权并查集

题目来源:HDU 3047 Zjnu Stadium 题意:给你一些人 然后每次输入a b c 表示b在距离a的右边c处 求有多少个矛盾的情况 思路:用sum[a] 代表a点距离根的距离 每次合并时如果根一样 判断sum数组是否符合情况 根不一样 合并两棵树 这里就是带权并查集的精髓 sum[y] = sum[a]-sum[b]+x 这里y的没有合并前b的根 #include <cstdio> #include <cstring> using namespace std; cons