zoukankan      html  css  js  c++  java
  • [NOIP2017TG] 洛谷 P3951 小凯的疑惑

    暴力

    先考虑一种暴力解法:使用类似于NOIP2018D1T2的完全背包,枚举a和b的个数。不过,我们很快发现不能表出的值在增大,却又无法确定何时最大。至少这个思路提供了一个大致方向:枚举。

    假设对于一个需被表出的面额k,先枚举b的个数,再确定余下(k-yb\,(yinmathbb{N}))能否被a整除。这就出现了一个性质:

    [(k-yb)\,mod\,b=k\,mod\,b ]

    考虑对模b的余数进行处理:多加几个b,直到它能被a整除为止。

    具体地说,我们需要确定最小的自然数n,使(a|(nb+k\,mod\,b))。这时可明确,最大值一定存在。

    证明:(0,a,2a,3a...(b-1)a) 分别(\,mod\,b),所得余数一定与([0,b-1])一一对应。

    假设(paequiv qa\,(mod\,b)\,(p<q,p,qin [0,b-1])),必有(b|(q-p)a),由a b互质得出(b|(q-p))。但又有(q-p<b),矛盾。

    (forall kin (ab-a,infty)),存在(min [0,b-1])使得(maequiv k\,(mod\,b)),推得(k-maequiv0\,(mod\,b)),则(k=ma+frac{k-ma}{b} imes b)

    此时已确定([ab-a,infty))皆可被表出。

    更进一步

    之后的事就很简单了。为方便研究,不妨设(a<b)

    (ab-a)覆盖的余数为(b-a),意味着模b得其他余数的k皆可被表出。

    而上一个模b得到(b-a)的数,就是第一个不可被表出的数了。即答案为

    [ab-a-b ]

  • 相关阅读:
    hdu2476 string painter
    lightoj1422 Halloween Costumes
    cf1369D---找规律,递推
    cf1368D---贪心
    cf1373D---思维,最大子段和
    poj2279 Mr. Young's Picture Permutations
    AT2442 fohen phenomenon 差分
    poj2796 feel good 单调栈
    poj2082 terrible sets 单调栈
    洛谷P2979 cheese towers
  • 原文地址:https://www.cnblogs.com/ehznehc/p/11699779.html
Copyright © 2011-2022 走看看