Do you like van♂ 游戏?
先说一下这题我的代码的效率很低,只能过五组数据,第六组会TLE,应该是数据规模太大了。
要题目的话直接往下翻即可,代码片后面就是。
思路:每个人只能喝一次药、每人的魔相等是突破口
设每个人最后魔都是k,一瓶药在被喝若干次后剩小于k就没有价值了,比如题目里500的瓶子喝了300,剩下的200就不能被利用了,因为被喝后只能补200,达不到300
每人最大的补魔不大于 魔法总值/人数,所以就从平均数往下遍历检查(我只能想到这个……i good vegetable a)
题目说了每组数据都有解,其实下限不算重要
每瓶药/每人补魔数,商=能补的人数。所有的药能补的人数加起来不低于总人数即可。
需要注意的是,不能用最小值递减去遍历检查,因为如果有一个反常的特小值,比如一瓶100其他都是100000,那瓶最小的完全可以不要,每人可以从其他的药里分到远大于100的魔。
我贫瘠的数学基础使我想不到更好的算法了。
#include<stdio.h>
int main()