A96793.Welcome24ever 和巧克力
省选/NOI-
官方
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
Welcome24ever 买到一块 n 维“单位立方体”巧克力(每条边长度都是 1)。这块巧克力在第 i 个维度上被等分成 ai 份,因此整块巧克力一共被划分成 a1a2⋯an 个小块;每个小块在第 i 维的长度是 ai1,体积是 a1a2⋯an1。
Welcome24ever 和朋友们想把巧克力切成至少 k 块,并且希望最小那一块的体积尽量大。切割规则如下:
- 只能沿着原本小块的分割面切(也就是只能在“格子线”上切)。
- 每一次切割必须选择某一个维度,并且这刀要贯穿整个巧克力。
- 所有切割结束后,才把巧克力分成小块。
更形式化地说:你需要选择整数 b1,b2,…,bn,满足 1≤bi≤ai,表示第 i 个维度上把巧克力切成 bi 份,则总块数为 b1b2⋯bn,要求
b1b2⋯bn≥k。
在这种切法下,最小的一块在第 i 维至少会包含 ⌊biai⌋ 个小段,所以最小块体积为
(∏i=1n⌊biai⌋)⋅a1a2⋯an1。
你要最大化的量是:
(∏i=1n⌊biai⌋)⋅a1a2⋯an1⋅k。
输入格式
第一行包含两个整数 n,k。
第二行包含 n 个整数 a1,a2,…,an。
输出格式
输出一个实数,表示最大可能的“最小块体积乘以 k”,要求绝对或相对误差不超过 10−9。
如果无论怎么切都无法分成至少 k 块,输出 0。
输入输出样例
输入#1
1 2 5
输出#1
0.8
输入#2
2 6 5 10
输出#2
0.72
输入#3
2 7 4 4
输出#3
0.875
输入#4
2 3 4 5
输出#4
0.75
输入#5
4 444 57 179 239 2
输出#5
0.97557326850704739751
输入#6
2 5 2 2
输出#6
0
说明/提示
数据范围
- 1≤n≤100
- 1≤k≤107
- 1≤ai≤107
样例解释
- 样例 1:取 b1=2,最小段数是 ⌊25⌋=2,最小块体积是 52,答案 52⋅2=0.8。
- 样例 2:可以切成 b1=2,b2=3,最小块体积是 5⌊5/2⌋⋅10⌊10/3⌋=52⋅103,答案乘上 k=6 得到 0.72。
- 样例 6:最多只能分成 2⋅2=4 块,小于 k=5,所以输出 0。