AtCoder ABC 165 D - Floor Function (Good, 手动模拟推出公式)

题目链接:Here

题意:

给出正整数 A,B,N(1A1e6,1B,N1e12) ,对于 x[0,N] 求出

  • AxBA×xB

的最大值


QAQ


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

如果不是 floor (向下取整) ,而是实数运算的话, AxBAxB=0 就恒成立了

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

实际模拟一下

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

x AxB A×xB 差值
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×xB 是周期的增加,B(=7),A(=5)

同理:AxB 也是一样的

f(x)=AxBA×xB​ 的取值对于 B 来说是周期性的,所以 x 的取值

  • x=0,1,2,...,B1

考虑这么多即可


x=0,1,2,...,B1 的范围中

  • AxB 单调递增
  • A×xB 保持不变
  • 那么 f(x) 单调性也就是同 AxB 一样单调递增了

换句话说,只要满足

  • x=0,1,...,B1
  • xN

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

那么最后答案输出 AB×min(N,B1)​​​ 即可

时间复杂度由全搜索的 O(n)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;
}
posted @   RioTian  阅读(51)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 5. Nginx 负载均衡配置案例(附有详细截图说明++)
历史上的今天:
2020-08-26 为什么我们需要配置环境变量
2020-08-26 Educational Codeforces Round 94 (A - D题题解)
点击右上角即可分享
微信分享提示