或三 level
获赞
3
粉丝
2
关注
4
看过 TA
3
中国人民解放军国防科技大学
2020
C++
IP属地:上海
暂未填写个人简介
私信
关注
2019-09-27 07:25
已编辑
中国人民解放军国防科技大学 C++
0 点赞 评论 收藏
分享
2019-09-21 17:56
已编辑
中国人民解放军国防科技大学 C++
题目大概意思: 有A、B、C三种葡萄和三个人,第一个人只吃A、B两种葡萄,第二个人只吃B、C两种葡萄,第三个人只吃A、C两种葡萄。 输入三个数a、b、c分别表示A、B、C三种葡萄的个数,请将这些葡萄全部分给三个人,使得吃葡萄最多的人吃的葡萄尽量少, 返回他所吃的葡萄数。
delight_hyhy:今天偶然看到这个题很有意思,尝试从数学角度去严格证明下。 三种水果的数量必然可以形成顺序 c >= b >= a 考虑简化情况,假设后面出现的分数都能整除。最后结果当不能整除的时候,应该会差个1。 先考虑最优情况,如果三个人都能任意从三种水果中自由选取, 最优解必然是(a + b + c)/3。 这里值得注意的是,实际最优解不整除,余数可以为1或2。余数为2时,总是可以分给其中两个人各一个。所以实际最后不能整除情况,只可能比整除情况多1。因为为了推导简便,后面都是按照整除处理。 首先c 恒大于 (a + b + c)/3。 因为显而易见的 c - (a + b + c)/3 = ((c - a) + (c - b))/3 >= 0 则当c为一个人分配达到最优解时,c类水果还剩下 c - (a + b + c)/3 = (2c -a - b)/3。 现在问题是,c类剩下的,还能不能保证另外一个人达到最优解 (a + b + c)/3。
投递网易等公司8个岗位 >
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务