[Noip2017]小凯的疑惑 exgcd 同余类BFS

探讨了在给定两种互质面值金币的条件下,如何找到无法使用这些金币准确支付的最大物品价值。介绍了常规解法及同余类BFS思想,并通过实例解释了算法原理。

$ \rightarrow $ 戳我进洛谷原题

小凯的疑惑

时空限制 $ \quad $ 1000ms / 256MB

题目描述

小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。
每种金币小凯都有 无数个。
在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。
现在小 凯想知道在无法准确支付的物品中,最贵的价值是多少金币?
注意:输入数据保证存在 小凯无法准确支付的商品。
 

输入输出格式

输入格式

两个正整数 $ a $ 和 $ b $ ,它们之间用一个空格隔开,表示小凯中金币的面值。

输出格式:

一个正整数 $ N $ ,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。
 

输入输出样例

输入样例#1
 3 7
输出样例#1
 11

 

说明

【输入输出样例 1 说明】

小凯手中有面值为 $ 3 $ 和 $ 7 $ 的金币无数个,
在不找零的前提下无法准确支付价值为 $ 1,2,4,5,8,11 $ 的物品,
其中最贵的物品价值为 $ 11 $ ,比 $ 11 $ 贵的物品都能买到,比如:
$ 12 = 3 \times 4 + 7 \times 0 $
$ 13 = 3 \times 2 + 7 \times 1 $
$ 14 = 3 \times 0 + 7 \times 2 $
$ 15 = 3 \times 5 + 7 \times 0 $

 

【数据范围与约定】

对于 $ 30 $ %的数据: $ 1 \le a,b \le 50 $ 。
对于 $ 60 $ %的数据: $ 1 \le a,b \le 10^4 $ 。
对于 $ 100 $ %的数据:$ 1 \le a,b \le 10^9 $ 。
 

题解

  • 常规解法:

  • 根据 $ exgcd $ ,不考虑 $ p,q \ge 0 $ 的情况下,通解 $ p=p_0 + k \times b, q=q_0- k \times a $

  • $ p,q \ge 0 $ 时,不能表示的必然满足 $ p>0, \quad q>0, \quad p-b<0, \quad q+a>0 $

  • 应取 $ p=b-1,q=-1 $ ,此时 $ p \times a+q \times b $ 有最大值

  • 答案为 $ a*b-a-b $

 

  • 同余类 $ BFS $ 思想:

  • 编号为 $ 0~a-1 $ 的 $ a $ 个点,每个点 $ x $ 到 $ (x+b)\quad mod \quad a $ 连边

  • 由 $ a,b $ 互质可知 $ 0,b,2 \times b, \dots , (a-1) \times b $ 在 $ mod \quad a $ 后必然各不相同

  • 这也是各个同余类中最小能标识的非负整数(最短路)

  • 不能表示的,就是再减掉 $ a $ ,其中最大的是 $ (a-1)*b-a $

转载于:https://www.cnblogs.com/PotremZ/p/NOIP2017D1T1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值