CF2038E.Barrels
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
假设你拥有 n 个水桶,它们依次排放,编号为 1 到 n。
每个水桶是相同的,底面积为一个单位,因此水桶内的水量对应水柱的高度。起初,第 i 个水桶中含有 vi 单位的水。
相邻的水桶之间通过管道相连。具体来说,对于每个从 1 到 n−1 的 i,水桶 i 与水桶 i+1 通过一个高度为 hi 的水平管道相连。管道的宽度可以忽略不计。这些管道可以让水在水桶之间流动。
现在,你想对这些水桶进行操作。你的目标是通过向水桶中投放粘土来最大化第一个水桶中的水量。每一步,你可以选择任意一个水桶,向其中添加一单位的粘土。粘土的单位体积与水相同,但粘土比水重且不会与水混合,因此它会下沉并均匀分布在桶底。
由于粘土具有黏性,当粘土的高度足够时,它会封住管道。更确切地说,如果管道的高度为 h,当粘土的高度达到或低于 h 时,管道仍然能正常工作。然而,一旦你向水桶中多加了一单位的粘土,管道就会立刻被封住,阻止水在水桶之间流动。
你拥有大量的粘土,因此可以多次执行上述操作。但在每次操作之后,你需要等待水达到新的平衡状态。
你能让第一个水桶中的水量达到的最大值是多少?
假定水桶足够高,因此不会溢出,并且可以忽略管道的宽度。
输入格式
第一行包含一个整数 n(2≤n≤2⋅105),表示水桶的数量。
第二行包含 n 个整数 v1,v2,…,vn(0≤vi≤106),表示每个水桶的初始水量。
第三行包含 n−1 个整数 h1,h2,…,hn−1(1≤hi≤106),表示水桶之间的管道高度。
请注意,输入数据保证水最初处于平衡状态。
输出格式
输出一个数字,表示第一个水桶中可能达到的最大水量。你的答案将被认为是正确的,如果其绝对误差或相对误差不超过 10−6。
格式上,设你的答案为 a,标准答案为 b。当且仅当 max(1,∣b∣)∣a−b∣≤10−6 时,答案被接受。
本翻译由 AI 自动生成
输入输出样例
输入#1
2 1 2 2
输出#1
2.500000000000000
输入#2
3 3 0 0 6 9
输出#2
3.000000000000000
输入#3
5 10 0 0 0 5 11 1 2 5
输出#3
11.916666666666667
输入解题思路,AI测评打分。不知道怎么写?