题意不难理解,一群人去开房,求最小开支。
我们可以从两个角度出发:
一、尽可能选性价比高的房型,即人均价格较低那款,于是我们可以得到以下两种方案:
1)全部选择双人房(当双人房的性价比远高于三人房时,最优)
2)全部选择三人房(当的三人房性价比远高于双人房时,最优)
二、尽可能的把每个房间都住满,因为当两种房型的性价比没有绝对优势时,房间的空位就会造成“损失”;
为了让每个房间都住满,我们可以通过拆房的方式来完成;
当然我们的大前提还是基于尽可能选性价比高的房型,所以此时又会出现以下几种情况:
1)双人房的性价比高,但最后一个房只有 1 个人,此时,拆掉 1 个双人房,拼凑 1 个三人房
2)三人房的性价比高,但最后一个房只有 1 个人,此时,拆掉 1 个三人房,拼凑 2 个双人房
3)三人房的性价比高,但最后一个房只有 2 个人,此时,把最后这个房替换成双人房
综合以上五点我们可以发现,我们的最优方案一定会在其中;
所以我们可以分别求出它们对应的价格,然后取一个最小值。
当然,这题卡了一个 long long,要注意这个细节。