[Noip2017]小凯的疑惑 exgcd 同余类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 $

posted @ 2018-09-08 19:17  potrem  阅读(673)  评论(4编辑  收藏  举报