2417. Loan Repayment

题目描述

Farmer John 欠了 Bessie N 加仑牛奶(1≤N≤10^12)。他必须在 K 天内将牛奶给 Bessie。但是,他不想将牛奶太早拿出手。另一方面,他不得不在还债上有所进展,所以他必须每天给 Bessie 至少 M 加仑牛奶(1≤M≤10^12)。
以下是 Farmer John 决定偿还 Bessie 的方式。首先他选择一个正整数 X。然后他每天都重复以下过程:
(1)假设 Farmer John 已经给了 Bessie G 加仑,计算 (N−G)/X 向下取整。令这个数为 Y。
(2)如果 Y 小于 M,令 Y 等于 M。
(3)给 Bessie Y 加仑牛奶。
求 X 的最大值,使得 Farmer John 按照上述过程能够在 K 天后给 Bessie 至少 N 加仑牛奶 (1≤K≤10^12)。

输入

输入仅有一行,包含三个空格分隔的正整数 N、K 和 M,满足 K⋅M<N。
注意这个问题涉及到的整数规模需要使用 64 位整数类型(例如,C/C++ 中的“long long”)。

输出

输出最大的正整数 X,使得按照上述过程 Farmer John 会给 Bessie 至少 N 加仑牛奶。

样例输入

10 3 3

样例输出

2

数据范围限制

测试点 1-3 满足 K≤10^5。
测试点 4-10 没有额外限制。

提示

在这个测试用例中,当 X=2 时 Farmer John 第一天给 Bessie 5 加仑,后两天每天给 Bessie M=3 加仑。

一看到题目,我们便能知道这是一道二分题……
题目思路:

每次先用二分查找求出x,接着判断一下x是否满足要求。如果可以,那么尝试找更大的x,反之缩小x,最终我们会找到x的最大值。大家好像都知道
如何去判断x是否满足条件呢?
其实就是去模拟,但是暴力就只能对4个点,时间复杂度为O(k log n),所以这题的难点是如何进行优化。

设r为当前未还的奶量,day为当前的剩余偿还天数,q为每日的偿还量。
主要可以进行两方面的优化:
1.if q<=m,其实就不需要再模拟了,我们可以得到接下来的偿还量就是m*day。
2.if q>m,可能会有连续几天还同样的牛奶量的情况(49/10,45/10,41/10),如果知道这个连续的天数,不就可以按照上述方法进行优化吗?(假设这个天数为p)由题意得到两个不等式。通过化简可得p的值,如下图:

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#define fre(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
using namespace std;
const int MAX=2147483647;
const int N=1e6;
long long n,k,m,l,r,mid;
bool judge(long long x)
{long long r=n,day=k; //初始剩余未还牛奶数量和偿还期限; while(1){long long p,q;q=r/x;if(q<=m) return m*day>=r;  //小于m,剩余天数每天还m; p=min(day,r/q-x+1);          //注意天数要在范围之内r-=p*q;day-=p;if(r<=0) return 1;  //期限内还完 if(!day) return 0;  //到期还未还完 }
}
int main()
{//fre(loan);scanf("%lld%lld%lld",&n,&m,&k);l=1,r=n;while(l<r){mid=(l+r+1)/2;if(judge(mid)) l=mid;else           r=mid-1;}printf("%lld\n",l);return 0;
}

2417. Loan Repayment相关推荐

  1. (纪中)2417. Loan Repayment【数学】

    (File IO): input:loan.in output:loan.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto ProblemSet 题目描述 Far ...

  2. 【USACO 2020 January Silver】Loan Repayment 题解

    [USACO 2020 January Silver]Loan Repayment 题目: 题目描述 Farmer John 欠了 Bessie N 加仑牛奶(1≤N≤10^12).他必须在 K 天内 ...

  3. Loan Repayment//二分//排位3

    Loan Repayment//二分 题目 Farmer John owes Bessie N gallons of milk (1≤N≤1012). He has to give her the m ...

  4. 2020.4.11普及C组 Loan Repayment【纪中】【二分】

    二分 直接二分xxx的值 (1~n) 然后我们对于当前二分到的xxx值做题目中的处理. 做完之后我们判断是否合法 合法就打擂台 至于怎么处理,请看我的注释! AC~Code #include<a ...

  5. 2020寒假【gmoj2417】【Loan Repayment】【二分】

    题目描述 Farmer John 欠了 Bessie N 加仑牛奶(1≤N≤1012).他必须在 KKK 天内将牛奶给 Bessie.但是,他不想将牛奶太早拿出手.另一方面,他不得不在还债上有所进展, ...

  6. GDUT_排位赛题解报告_第3场_B.Loan Repayment

    题目: Farmer John owes Bessie N gallons of milk (1≤N≤1012). He has to give her the milk within K days. ...

  7. 【USACO 2020 January Silver】Loan Repayment

    题目描述 Farmer John 欠了 Bessie N 加仑牛奶(1≤N≤10^12).他必须在 K 天内将牛奶给 Bessie.但是,他不想将牛奶太早拿出手.另一方面,他不得不在还债上有所进展,所 ...

  8. 20200413 jzoj 普及c组 Loan Repayment

    夏阳:你们好 你们好呀:我是小柴 今天咱们分享啥题目?:小柴 夏阳:听说Farmer John 欠了 Bessie加仑牛奶 嘿嘿嘿,欠债还钱天经地义:小柴 夏阳:你好像还欠我钱(小声) 夏阳:快点快点 ...

  9. 2020 GDUT Rating Contest III (Div. 2) B - Loan Repayment 题解

    原题 题目大意 给出NNN,KKK,MMM,假定已经给了GGG加仑奶,定义N−GX\frac{N-G}{X}XN−G​为YYY,YYY最小为MMM,在KKK天后至少给NNN加仑奶,求最大的XXX. 题 ...

最新文章

  1. bugzilla部署
  2. 看BAT技术面试官如何挑选Java程序员
  3. LINQ To DataSet 几个常用示例
  4. 微信数据分析包准备(Python)
  5. linux 信号量semget,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  6. Latex指南(part1)--利用beamer制作学术报告文稿
  7. 客运售票员_汽车客运站售票员售票操作规范
  8. 从数学到计算机 从莱布尼兹到冯诺依曼 从数理逻辑到算法分析
  9. 【Linux】Linux软件安装和定时任务
  10. Uber地图部门三员大将离职创业,要解决无人驾驶出租车的派单问题
  11. 抓住数字经济机遇 新华三助力客户加速转型
  12. stc和sac_短期成本曲线
  13. 戴尔服务器720dx格式化硬盘,戴尔首个基于 Ocarina 的解决方案--DX6000G 存储压缩节点...
  14. X5开发团队看板 维护工作 根据计划生成工作 部分代码
  15. P1757 通天之分组背包题解
  16. POI导出excel,按照父子节点进行分级显示
  17. 从ECU和CPU视角理解AutoSar网络管理
  18. 暑假java培训班,分享面经!
  19. Codeforces div2 D. Madoka and The Corruption Scheme
  20. 在GIS中用ggmap地理空间数据分析

热门文章

  1. mysql未开启binlog如何恢复数据_MySQL5.7开启binlog日志,及数据恢复简单示例
  2. SPA(单页面应用)的基本实现原理
  3. 常用单片机模块(五)
  4. PHP GD库文字生成图片及图片拼接
  5. 达人评测 酷睿i7 1195g7和i7 1260p对比选哪个
  6. 股市学习稳扎稳打(四)当宏观经济出现复苏时,不同的行业分别以什么顺序进行轮动上涨
  7. 通过身份证号码得到性别和出生日期
  8. java 像素矩阵_JAVA eclipse 中,已知灰度图像的像素矩阵怎么输出这个图像
  9. 用户体验五要素_【产品经理】如何理解“用户体验要素”5层模型?
  10. Hive处理数据基本操作流程