首页 > 其他分享 >洛谷 P6003 总结

洛谷 P6003 总结

时间:2023-06-05 17:22:06浏览次数:42  
标签:总结 洛谷 log ll sqrt P6003 return 复杂度

题目:洛谷 P6003

链接:洛谷逐月

题意

  • 有一个人欠了别人 \(n\) 单位牛奶,每一天他会还 \(y = \max(m, \frac{n - g}{x})\) 单位,\(g\) 为之前还的牛奶,请求出最大的 \(x\) 使得这个人在 \(k\) 天后能换至少 \(k\) 单位牛奶。

  • \(1 \le n, m, k \le 10^{12}, km < n\)。

思路

暴力

首先这个题有单调性,若 \(x\) 能满足要求,那么 \(x-1\) 也行。所以可以二分 \(x\),在模拟 \(k\) 天的情况,判断即可。

正解

  • 可以发现这在很多天里,\(y\) 是相同的,如果把这些相同的合并起来,就可以降低很多的复杂度。但是怎么知道现在有多少个相同的呢,我们需要先找到需要达到要求的最小 \(n\),也就是 \(xy\),那么当前的 \(n - g\) 要经历多少次才会 $ < xy$ 呢,答案是 \(\lceil \frac{n - g - xy}{y} \rceil\),所以这就达到了合并相同的 \(y\) 的效果。

  • 最后判断需要的天数和 \(k\) 的大小关系即可,注意每天至少给 \(m\) 单位的细节即可。

  • 但是问题来了,这能过吗,可以发现每个 \(y\) 都不一样,所以最极端的情况是 \(y = 1, 2, 3, 4, \dots\),\(y\) 的种数只有 \(\sqrt{n}\) 级别,可以通过此题。

时间复杂度

暴力

  • 二分:\(O(\log n)\)。
  • 模拟:\(O(k)\)。
  • 总时间复杂度:\(O(k \log n)\)。

正解

  • 二分:\(O(\log n)\)。
  • \(y\) 最多 \(\sqrt{n}\) 种取值,\(O(\sqrt{n})\)。
  • 总时间复杂度:\(O(\log n \cdot \sqrt{n})\)。
using ll = long long;

ll n, k, m;

bool Check(ll x) {
  if (n / x < m) {
    return 0;
  }
  ll w = x * m, _n = n, c = 0;
  while (_n > w) {
    ll q = _n / x, t = x * q; // 注明一下 q 是思路中的 y
    ll s = max(1LL, (_n - t + q - 1) / q); // 增加的天数
    _n -= s * q, c += s; // _n %= q 
  }
  return (c + (_n + m - 1) / m <= k);
}

ll F() { // 二分答案
  ll l = 1, r = n;
  while(l < r) {
    ll mid = (l + r + 1) >> 1;
    if (Check(mid)) {
      l = mid;
    } else {
      r = mid - 1;
    }
  }
  return l;
}

int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n >> k >> m;
  cout << F();
  return 0;
}

标签:总结,洛谷,log,ll,sqrt,P6003,return,复杂度
From: https://www.cnblogs.com/xhr0817-blog/p/17458465.html

相关文章

  • 欧奈儿行业 RPS 排名,一图览全貌 2023-06-05 ,继续跟踪总结
    自动复盘2023-06-05k线图是最好的老师,点击详情图可以看到行业20日RPS的排名,最底下子图是行业rps走势线跟踪板块总结:成交额超过100亿排名靠前,macd柱由绿转红公众hao:醉卧梦星河欧奈尔行业RPS排名天天更新追踪主力行业趋势更容......
  • 项目总结
    本学期,我们软件工程系的三人团队成功完成了一项创新的项目:javaweb端智能简历解析系统,并参加了双创杯比赛。在项目的过程中,我们面对了各种挑战,在团队合作,技术实现,设计开发等方面经历了很多的收获和成长。在本篇文章中,我将分享我们团队的项目经验和所学。一、项目背景和需求随着互......
  • elementPlus 问题总结
    第一次搞,遇上很多弱智问题,记录一下安装elementPlus $npminstallelement-plus--save全局引入importElementPlusfrom'element-plus'import'element-plus/dist/index.css'createApp(App).use(ElementPlus).mount('#app')直接使用组件 ,但是,问题出现了,引入的......
  • leetcode-滑动窗口总结
    滑动窗口是我在刷题时感觉比较困难的部分,简单做一个总结,防止之后又忘了:一般模板如下://注意:java代码由chatGPT......
  • 五月份项目总结
    放完五一回公司上班,五月咻咻咻就过去了,活一多时间就不够用。五月二十日周六还加了一天班,这是我工作一年来加的第二天班,或者说第二次加班,我司还是很给力的。写写项目情况吧,是陕西那边的一个项目,项目组里的同事各个地方的都有,就是不在同一地方,没有当面沟通,天天线上开会,感觉......
  • 第十四周学习总结
    这是第十四周,距离考试周也进了,同时在大多数课程的结束阶段,我们的大多数课程都进入了实验阶段,这也意味着我们有活要干了,工程数学,python,数据库的报告堆积如山,还有形势与政策,社会实践等一些与思修方面的的报告,这注定不能太过于轻松。学科方面,庆幸我们的系主任没有给我们布置太过具有......
  • 个人总结
    1、回顾我的课程计划,当时写的是独立完成一个软件,这件事在建民老师让我们做打卡软件的时候就已经完成,然后就是对软件更多的功能进行了学习。2、《构建之法》这本书的内容逻辑很清晰明了,第一章是从整体分析软件工程这门学科的发展和所处的社会环境,接着后面的几章深入分析了软件开......
  • 西安互联网公司3年工作生涯总结
          和这个时间点非常的应景,恰逢要离开目前供职的公司,又恰逢到年底了,需要做做总结,然后就是差不多3年没有对自己好好做做总结了。那么这些就攒在一起,好好表表自己回西安后的这三年!word天,顿感压力,计划花整个12月份来完善这篇总结。      如果说从杭州回西安更多的是......
  • 1-6 Linux常用命令总结
    用自己的理解总结文件管理,用户管理,组用户,权限管理相关的命令。 文件:【touch/rm/rmdir/cat/head/less/more】。 用户及组:user/group【useradd/userdel/usermode;groupadd/groupdel/groupmod;chsh/...】。 权限【chmod/chown/setfacl】"文件管理ls-ld/etc  看目......
  • Zookeeper的学习总结
    源:http://www.tuicool.com/articles/2IBzyq评:Zookeeper的核心概念:ZNodeZnode就是核心结构,Zookeeper服务中是由大量的Znode构成。Znode一般是由客户端建立和修改,作为信息或标志的载体,甚至本身就是标志。Znode可以设置为持久(PERSISTENT)或临时(EPHEMER......