思路:
假设混合这种饮料的比例是1:2:3,每种饮料分别的分量是20:30:20,那么首先需要明确这个比例中的那个短板,也就是最小的需要使用多少的量,这才是确定能配置最多的饮料的量。也就是这里面的20/3能配置9份的量。因为其余两个分别是20/1=20份,20/2=15份,如果按照20份和15份配置,a3的量不够配置这种混合饮料。所以都应该按照9份的量来配置,故res=(1+2+3)*20/3的值,如果res比v的值大,就取v,如果比v小,则取res
const readline = require("readline") const rl = readline.createInterface({ input: process.stdin, output: process.stdout }) let inputNum = 2 let inputDatas = [] rl.on("line", function (data) { inputDatas.push(data) if (inputDatas.length > inputNum) { let first = inputDatas[0].split(" ") // 两个正整数n和V,表示原料种类数和容器容积。(1<=n<=1000,1<=V<=1000000) let n = first[0] // 1-n的编号 let v = Number(first[1]) //上限范围 let second = inputDatas[1] //包含n个数a1,a2,a3,...an,表示n种原料的配比 let an = second.split(" ") let aSum = an.reduce((pre, val) => { return Number(pre) + Number(val) }, 0) let third = inputDatas[2] // 输入第三行包含n个数b1,b2,b3...bn,表示小M拥有的各种原料数 let bn = third.split(" ") let min = 0 for (let i = 0; i < n; i++) { min = min === 0 ? bn[i] / an[i] : Math.min(bn[i] / an[i], min) } let res = aSum * min console.log(Number(Math.min(v, res)).toFixed(4)) inputDatas = [] } }) rl.on("close", function () { process.exit() })