贪吃的小q-程序员宅基地

技术标签: leetcode  

牛客题目https://www.nowcoder.com/questionTerminal/d732267e73ce4918b61d9e3d0ddd9182?orderByHotValue=1&page=1&onlyReference=false
小Q的父母要出差N天,走之前给小Q留下了M块巧克力。小Q决定每天吃的巧克力数量不少于前一天吃的一半,但是他又不想在父母回来之前的某一天没有巧克力吃,请问他第一天最多能吃多少块巧克力

输入描述:
每个输入包含一个测试用例。
每个测试用例的第一行包含两个正整数,表示父母出差的天数N(N<=50000)和巧克力的数量M(N<=M<=100000)。


输出描述:
输出一个数表示小Q第一天最多能吃多少块巧克力。
示例1
输入
7
输出
4

 

一道比较经典的题目 贪吃的小q,也是一道比较经典的二分查找变形的问题。

在二分中,最小值为1,最大值为m(巧克力的数量)

取中间值时为(1+m+1)/2   在用sum(int n, int s)求出共有多少个巧克力,来和巧克力的数量M比较。

public class Q{
	public static void mian(String[]args){
			Scanner scanner = new Scanner(System.in);
			int day = scanner.nextInt();
			int number = scanner.nextInt();
			System.out.println(fun(day,number));		
	}

    //进行二分查找找到一天可以吃最多的个数
	private static int fun(int n,int m){

		if(n == 1){
			return m;
		}

		int low = 1;
		int high = m;
		while(low <= high){
			int mid = (low+high+1)/2;
			int result = sum(n,mid);
			if(result == m){
				return mid;
			}else if(result < m){
				low = mid + 1;
			}else{
				high = mid - 1;
			}
		}
		return high; 
	}

    //第一天最多吃num个,吃n天。求出需要总共多少个
	private static int sum(int n, int num){

		int s = 0;
		for(int i = 0; i < n; i++){
			s = s + num;
			num = num/2 + num%2;
		}
		return s;
	}
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/SneakyRogue/article/details/89320150

智能推荐

基于水平集的图像分割方法_fcxvsd-程序员宅基地

文章浏览阅读1.2w次,点赞10次,收藏60次。一、引言借鉴一些流体中的重要思想, 1988年,Osher和Sethian首次提出了水平集算法[1],这是一种有效解决曲线演化问题的数值方法,并且计算稳定,适宜任意维数空间。随后,Osher等人对水平集算法做出扩展和总结[2,3], Giga也做了相关的理论扩展[4]。近年来这种算法已被广泛地应用在图像处理领域[5]中 ,尤其在图像分割中已取得了很大的进展。事实上,用水平集来解决图像分割问题的_fcxvsd

php var_export 对循环引用的问题(Uncaught ErrorException: var_export does not handle circular references)-程序员宅基地

文章浏览阅读4.9k次。因为有些数据不知道具体类型,在使用var_export($data, true) 的时候,遇到:Uncaught ErrorException: var_export does not handle circular references。改用: print_r($data, true) 即可解决这个问题。..._var_export does not handle circular references

matlab 生成文件夹,matlab实现遍历文件夹并自动创建对应的新文件夹方法-程序员宅基地

文章浏览阅读789次。能自动将文件夹中所有文件自动的识别并创建对应的文件夹,文件夹名要和文件中某个字段相同。用system()函数。如下tmp1=['mkdir ' dir_final];system(tmp1); %文件夹创建完成我试了下,用下面的函数系统就自动关机了,哈哈fun='shutdown -s';system(fun);你运行了?哈哈,别急赶紧在运行里输入shutdown -a 就取消自动关机了,不过..._natlab nkdir生成文件夹

Android - ImageButton单击切换按钮图片效果的实现_安卓imagebutton加入java-程序员宅基地

文章浏览阅读3.6k次。在android中有一个ImageButton的View,跟Button按钮的区别是可以在Imagebutton上加载一个图片。从ImageButton这个字面意思上来看,它是一个图片按钮,那么我们就可以使用它做一个我们想要的图片按钮了,但是我们在实际使用的过程当中,就会发现该按钮的使用并没有想像中的那么简单,需要再增加一些代码或再配置XML才能实现图片按钮按下的效果,个人感觉有点麻烦,不_安卓imagebutton加入java

IOS 关于NSNotification_nsnotification userinfo 什么类型-程序员宅基地

文章浏览阅读3.4k次。这是一个观察者模式。首先在你需要监听的类中加入观察者:- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject;这个观察者在监听到anObject发送名字为aName的notification时,调用selector的方法,在aSelector方_nsnotification userinfo 什么类型

android bundler机制_安卓bundler机制-程序员宅基地

文章浏览阅读2.1k次。在android中提供了一种异步回调机制Handler,使用它,我们可以在完成一个很长时间的任务后做出相应的通知 handler基本使用: 在主线程中,使用handler很简单,new一个Handler对象实现其handleMessage方法,在handleMessage中提供收到消息后相应的处理方法即可,这里不对handler使用进行详细说明,在看本博文前,读者应_安卓bundler机制

随便推点

Cassandra配置多节点集群_cassandra_seeds-程序员宅基地

文章浏览阅读1.5k次。上一篇文章 Cassandra入门指南 中,我们已经配置好了一个单节点集群,接下来,我们要往这个集群中多加几个节点,看看多个节点是如何同时工作的。Cassandra节点之间交换信息是通过一种叫做Gossip(暂时不知道该翻译为哪个专有名词合适,暂且意会吧)的机制。但是要想让一个消息传递到一个新加入的节点,至少还需要知道另外一个节点,这个节点叫做种子(Seed)。通常我们会选择一小部分相对稳定的节点..._cassandra_seeds

python 如何调用子程序并自动传参数 os.system os.popen subprocess_python如何调用子程序-程序员宅基地

文章浏览阅读4.5k次,点赞4次,收藏14次。背景最近工作中有遇到这样一种情况,需要执行一个 exe 文件更改某些设置来触发Service 工作,而执行这个 exe 程序需要一个屏幕输入参数,这个输入参数也是需要python 脚本生成的。如果每次都是 cmd 执行这个 exe 程序,把..._python如何调用子程序

React 中 CSS in JS 的最佳实践_react使用scss-程序员宅基地

文章浏览阅读854次,点赞26次,收藏11次。本人分享一下这次字节跳动、美团、头条等大厂的面试真题涉及到的知识点,以及我个人的学习方法、学习路线等,当然也整理了一些学习文档资料出来是附赠给大家的。知识点涉及比较全面,包括但不限于前端基础,HTML,CSS,JavaScript,Vue,ES6,HTTP,浏览器,算法等等详细大厂面试题答案、学习笔记、学习视频等资料领取,点击资料领取直通车!!全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**_react使用scss

小程序跳转外链_外链跳转小程序-程序员宅基地

文章浏览阅读2.2k次。小程序跳转外链_外链跳转小程序

微信内置WeixinJSBridge_weixinjsbridge.call-程序员宅基地

文章浏览阅读941次。微信H5页面(关闭页面&&退出网页)isWechat = () => { let ua = window.navigator.userAgent.toLowerCase(); return ua.match(/MicroMessenger/i) == 'micromessenger';};if (isWechat()) { WeixinJSBri..._weixinjsbridge.call

PHP setcookie() 首次存储不上值_首次set-cookie-程序员宅基地

文章浏览阅读888次。客户端:可以看到,浏览器(客户端)向服务器发出一次请求,发出请求的时候,在请求头信息中带上了各种参数,告诉服务器,我要接收什么样的文本(Accept)、什么编码格式(Accept-Encoding)、什么语言(Accept-Language)等等,当然,还把Cookie也传到了服务器(Cookie)。服务器端:第一步:setcookie('a','value')因为cookie是设..._首次set-cookie