【题目描述】
Franky很苦恼他一直不长胡子。
看到同学大叔一样的胡子,Franky总是很无耻的偷笑…
有一天,杨老师要带Franky参加n天的外出培训!!!好开心!!
在火车上,Franky突然发现自己长了胡子!
杨老师带Franky去查了基因图谱==(好贴心)
并且发现:
1.胡子初始每天深夜都会长v cm;
2.每次在剃掉胡子之后胡子增长的速度会增加s cm/天;
Franky很伤心,并且由于来时并不需要剃须刀,所以只能借杨老师的,但是杨老师很吝啬(哼( ﹁ ﹁ ) ~→)
他只允许Franky使用x次剃须刀,而且只允许在晚上睡前用。
【输入格式】
输入格式:
一行,n,s,v,x四个整数。
【输出格式】
输出在培训期间Franky的胡子最长的那天胡子的长度最短值。
【样例输入】
6 1 1 2
【样例输出】
4
【提示】
保证对于20%的数据,x,n,c,s<=10;
对于70%的数据,x,n<=5000,c,s<=100;
对于100%的数据,x,n<=100000,c,s<=10000;

Solution:

经典的二分答案例题

注意到题目要求最大值最小,最大最小是一个典型的二分答案型题目。

所以我们可以二分一个最长的胡子长度,初始我们使R=一个极大值,l=1,mid = (r + l) / 2,然后用模拟的方式运行检验,在运行的过程中如果出现当前胡子长度大于我们二分出的mid我们就需要把当前的胡子剪掉,如果我们n天走下来剪胡子的次数 < x那么对于这个mid值是可行的那么我们让r=mid尝试能不能继续缩小答案,如果>mid那么证明不行我们要扩大答案继续检验,我们不必关心对于一个可行的mid中最长的那个小于mid的情况,因为在二分的过程中我们一定会二分出这个情况。时间复杂度O(nlogm)。

代码如下:

#include <bits/stdc++.h>
#define LL long long
using namespace std;
LL n, s, v, x;
bool check(LL len)
{LL speed = v, length = 0, ci = x;for (LL i = 1; i <= n; i++){length += speed;if (length > len){length = 0;speed += s;ci--;i--;}if (ci == -1)return 0;}return 1;
}
int main()
{freopen("beard.in", "r", stdin);freopen("beard.out", "w", stdout);cin >> n >> s >> v >> x;long long l = 0;long long r = n * (s + v);while (l <= r){LL mid = (l + r) >> 1;if (check(mid))r = mid - 1;elsel = mid + 1;}cout << l;
}

[cogs2482][二分答案]Franky的胡子相关推荐

  1. COGS 2482. Franky的胡子【二分,高精度】

    2482. Franky的胡子 ☆   输入文件:beard.in   输出文件:beard.out   简单对比 时间限制:1 s   内存限制:128 MB [题目描述] Franky很苦恼他一直 ...

  2. UVA1396 Most Distant Point from the Sea(AM - ICPC - Tokyo - 2007)(计算几何,半平面交 + 二分答案)

    整理的算法模板合集: ACM模板 题目传送门 见<训练指南>P279 很明显就是一个二分答案,它问的是最远的点,直接枚举因为这里都是double类型的数所以有无限个点,我们可以直接二分. ...

  3. UVA1146 / LA3211(ACM-ICPC 2004 Europe - Southwestern) Now or later(2-SAT问题 + 二分答案)

    题目要求为 最大化最小值,很明显就是二分答案. 题目中每个飞机 要么是一种状态(早),要么是另一种状态(晚),考虑 2-SAT. 我们二分答案,二分着陆时间间隔的最小值 x. 枚举每两个飞机 p , ...

  4. 解题报告:luoguP2868 Sightseeing Cows G(最优比率环,负环判定,二分答案)

    根据题意,我们要环上各点权值之和除以各边权值之和最大. 求最大答案,很明显可以使用二分答案.那么我们假设当前答案为 x,如果有更大的答案,那么方程就可以按下图转换: 也就是说如果有更大的答案,则有一个 ...

  5. P2759 奇怪的函数(二分答案,数学运算)

    P2759 奇怪的函数 范围2e92e92e9,直接枚举肯定超时,正着直接求答案求不出来,那么运用逆向思维,直接二分答案判断即可.这道题涉及简单的数学运算. 要xx>=nx^x>=nxx& ...

  6. P3743 kotori的设备(二分答案,思维,线性)难度⭐⭐⭐

    题目链接 题目背景 kotori 有 n 个可同时使用的设备. 题目描述 第 i 个设备每秒消耗ai个单位能量.能量的使用是连续的,也就是说能量不是某时刻突然消耗的,而是匀速消耗.也就是说,对于任意实 ...

  7. 【基础算法】二分法(二分答案,二分查找),三分法,Dinkelbach算法,算法详解+例题剖析

    目录 一 . 二分法 二分搜索得要求: 二分查找步骤: 二分答案: 玄学的二分(二分答案) 二 . 三分法 例题 三.01分数规划问题相关算法与题目讲解(二分法与Dinkelbach算法) 一 . 二 ...

  8. 洛谷P1182 数列分段Section II 二分答案

    洛谷P1182 数列分段Section II 二分答案 题意:将 n 个 数 分为 m段 求一种方案,使这m段中最大的和 最小 额..可能有点拗口,其实就是说每一种方案,都有对应的 每段和的最大值, ...

  9. 【枚举】【二分答案】【分块答案】【BFS】【最大流】【Dinic】bzoj1189 [HNOI2007]紧急疏散evacuate...

    [法一]枚举Time(0~N*M): S->'.'(1); 'D'->T(Time); '.'->'D'(dis(用BFS预处理,注意一旦到达'D',BFS就不能继续扩展了,注意di ...

最新文章

  1. 区块链技术入门,都涉及哪些编程语言?
  2. python面向对象重新梳理
  3. django syncdb命令失效
  4. zookeeper web ui--gt;node-zk-browser安装
  5. Error starting userland proxy: listen tcp 0.0.0.0:5601: bind: address already in use
  6. OpenCV EM clustering集群的实例(附完整代码)
  7. 关于java的项目_关于java项目与javaweb项目
  8. 几个改变世界的java工具
  9. c:forEach varStatus属性
  10. c语言冒泡结构入门程序,C语言入门:冒泡排序
  11. 网页导出pdf不完整_今天才知道!Word、Excel、PDF格式还能随意转换,20秒即可实现...
  12. codeforce Gym 101102A Coins (01背包变形)
  13. 关于Go1.14,你一定想知道的性能提升与新特性
  14. Vue2.0源码阅读笔记(三):计算属性
  15. iphone升级ios7之后出现蓝框框一直跳的问题
  16. android 前后台,Android App前后台监控
  17. windows7共享打印机无法连接0x00000bcb错误怎么解决
  18. 【.Net】.Net操作AD域账号,获取AD用户后可以获取的属性列表 directoryEntry Properties list
  19. 物联网服务器搭建资料汇总
  20. win10计算机图片,Win10使用系统自带的电子相册整理电脑中照片方法图解

热门文章

  1. 统计知识基础(三)常用构造估计量的两种方法——矩估计、最大似然估计
  2. a eraser eraser还是an_是a eraser还是an eraser
  3. C#连接FTP服务器默认打开根目录
  4. 查看cbr vbr_如何在口径中查看CBR和CBZ漫画书
  5. 小程序内关注微信公众号的几种方式
  6. 三、box 盒子模型
  7. 门户通专访爱思网创始人韩笑:SNS网站必然走向实用化!
  8. 2019 中国开源年会即将开启
  9. 理解BPDU Filtering的意义(BPDU Filtering在全局配置与接口配置上的区别)
  10. 跳棋最少移动次数 java,跳棋