zoukankan      html  css  js  c++  java
  • AtCoder ABC 165 D

    题目链接:Here

    题意:

    给出正整数 (A,B,N (1le Ale 1e6,1le B,Nle1e12)) ,对于 (xin [0,N]) 求出

    • (leftlfloorfrac{A x}{B} ight floor-A imesleftlfloorfrac{x}{B} ight floor)

    的最大值


    [QAQ ]


    全搜索的话 (mathcal{O}(n)) 的时间复杂度是肯定不行的,直接看过去公式应该能够化简,

    如果不是 (floor) (向下取整) ,而是实数运算的话, (frac{Ax}B - frac{Ax}B = 0) 就恒成立了

    大概如上思考的话,总觉得为了使 (x) 这个值更大,原公式后面部分的 (leftlfloorfrac{x}{B} ight floor)​ 应该尽可能的靠近向上取整得到的整数,即尽可能得到 ((.999999))​ 这样的答案,此时差值就变大起来了

    实际模拟一下

    样例一:(A=5,B=7,N=4)

    (x) (leftlfloorfrac{A x}{B} ight floor) (A imesleftlfloorfrac{x}{B} ight floor) 差值
    0 0 0 0
    1 0 0 0
    2 1 0 1
    3 2 0 2
    4 2 0 2
    5 3 0 3
    6 4 0 4
    7 5 5 0
    8 5 5 0
    9 6 5 1
    10 7 5 2
    11 7 5 2
    12 8 5 3
    13 9 5 4

    而且要注意的是:

    • (A imesleftlfloorfrac{x}{B} ight floor) 是周期的增加,(B(=7),A(=5))

    同理:(leftlfloorfrac{A x}{B} ight floor) 也是一样的

    (f(x) = leftlfloorfrac{A x}{B} ight floor-A imesleftlfloorfrac{x}{B} ight floor)​ 的取值对于 (B) 来说是周期性的,所以 (x) 的取值

    • (x=0,1,2,...,B-1)

    考虑这么多即可


    (x = 0,1,2,...,B-1) 的范围中

    • (leftlfloorfrac{A x}{B} ight floor) 单调递增
    • (A imesleftlfloorfrac{x}{B} ight floor) 保持不变
    • 那么 (f(x)) 单调性也就是同 (leftlfloorfrac{A x}{B} ight floor) 一样单调递增了

    换句话说,只要满足

    • (x=0,1,...,B-1)
    • (xle N)

    的话符合条件的最大 (x)​ 应该是 (x=min(N,B-1))

    那么最后答案输出 $ frac AB imes min(N,B-1)$​​​ 即可

    时间复杂度由全搜索的 (mathcal{O}(n) o mathcal{O}(1))

    ll a, b, n;
    int main() {
        cin.tie(nullptr)->sync_with_stdio(false);
        cin >> a >> b >> n;
        cout << a * min(n, b - 1) / b;
    }
    

    The desire of his soul is the prophecy of his fate
    你灵魂的欲望,是你命运的先知。

  • 相关阅读:
    JavaScript中的闭包
    SQL 备忘
    SqlServer 2005 升级至SP2过程中出现"身份验证"无法通过的问题
    unable to start debugging on the web server iis does not list an application that matches the launched url
    Freebsd 编译内核
    Freebsd 6.2中关于无线网络的设定
    【Oracle】ORA01219
    【Linux】Windows到Linux的文件复制
    【Web】jar命令行生成jar包
    【Linux】CIFS挂载Windows共享
  • 原文地址:https://www.cnblogs.com/RioTian/p/15189165.html
Copyright © 2011-2022 走看看