码迷,mamicode.com
首页 > 编程语言 > 详细

【POJ】2142 The Balance 数论(扩展欧几里得算法)

时间:2018-01-19 15:40:45      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:扩展欧几里得算法   div   因此   poj   最小   lan   欧几里德   直线   balance   

【题意】给定a,b,c,在天平左边放置若干重量a的砝码,在天平右边放置若干重量b的砝码,使得天平两端砝码差为c。设放置x个A砝码和y个B砝码,求x+y的最小值。

【算法】数论(扩展欧几里德算法)

【题解】问题转化为求满足方程ax+by=c,|x|+|y|的最小值。

先用扩展欧几里得算法求得通解。

由原方程得答案分布在y=-a/b*x+c/b(a>0,b>0,c>0),因此是k<0,b>0的直线。

由于斜率一定,min{|x|+|y|}一定出现在x轴两侧或y轴两侧,判断一下即可。

数据比较弱,所以网上很多题解都是最小非负x和y,反例:1 10 29。

【POJ】2142 The Balance 数论(扩展欧几里得算法)

标签:扩展欧几里得算法   div   因此   poj   最小   lan   欧几里德   直线   balance   

原文地址:https://www.cnblogs.com/onioncyc/p/6180914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!