C. Discrete Acceleration(浮点二分)
创始人
2024-01-22 06:54:54
0

Problem - 1408C - Codeforces

 题意:
 

有一条长度为l米的道路。路的起点坐标为0,路的终点坐标为l。

有两辆汽车,第一辆站在路的起点,第二辆站在路的终点。它们将同时开始行驶。第一辆车将从起点开到终点,第二辆车将从终点开到起点。

最初,他们将以每秒1米的速度行驶。在不同的坐标a1,a2,...,an有n个旗子。每当两辆汽车中的任何一辆驶过一个旗子时,该汽车的速度每秒增加1米。

求汽车相遇(到达同一坐标)需要多长时间。

输入
第一行包含一个整数t(1≤t≤104):测试案例的数量。

每个测试案例的第一行包含两个整数n,l(1≤n≤105,1≤l≤109):旗帜的数量和道路的长度。

第二行包含n个整数a1,a2,...,an,按递增顺序排列(1≤a1

保证所有测试案例的n之和不超过105。

输出
对于每个测试案例,打印一个单一的实数:汽车相遇所需的时间。

如果你的答案的绝对或相对误差不超过10-6,将被认为是正确的。更正式地说,如果你的答案是a,而陪审团的答案是b,如果|a-b|max(1,b)≤10-6,你的答案将被认为是正确的。

例子
输入
5
2 10
1 9
1 10
1
5 7
1 2 3 4 6
2 1000000000
413470354 982876160
9 478
1 10 25 33 239 445 453 468 477
输出
3.000000000000000
3.666666666666667
2.047619047619048
329737645.750000000000000
53.700000000000000

题解:

看到那么多小数还有求最小的基本就是浮点二分了

关键在于二分什么

我们可以二分他们相遇的地点,check他们走前半段与后半段的时间,

#include
#include
#include
#include
#include
#include
using namespace std;
double a[100050];
int n;
double L;
double check1(double x)
{double pre = 0;double t = 0;double v = 1.0;for(int i = 1;i <= n;i++){if(a[i] <= x){t += (a[i] - pre)/v;pre = a[i];v += 1.0;}else{break;}}t += (x - pre)/v;return t;
}
double check2(double x)
{double pre = L;double t = 0;double  v = 1.0;for(int i = n;i >= 1;i--){if(a[i] >= x){t += (pre-a[i])/v;pre = a[i];v+= 1.0;}else{break;}}t += (pre - x)/v;return t;
}
void solve()
{cin >> n >>L;for(int i = 1;i <= n;i++)cin >> a[i];double l = 0,r = L;while(r-l > 1e-6){double mid = (r+l)/2.0;double t1 = check1(mid);double t2 = check2(mid);if(t1 < t2){l = mid;}else{r = mid;}}printf("%.8lf\n",check1(l));
}
int main()
{int t = 1;cin >> t;while(t--){solve();}
}
//
//

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...