传送门:点击打开链接

入门基础之二分答案

Time Limit: 1000 MS Memory Limit: 65536 KB
Total Submit: 179 Accepted: 33 Page View: 744

Description

M78喜欢积木,更喜欢机器人。于是,他决定用积木组装机器人。积木总共有三种,做一个机器人需要三种类型的积木分别a,b,c个。现在,他分别有这三种积木x,y,z个。另外,他还有一些金币。他总共有sum个金币,他可以用这些金币购买积木,购买这三种积木分别会花费c1,c2,c3金币。M78想尽可能地多做一些机器人,问,他最多能做多少个机器人?

Input

多组输入。每组输入共三排。
第一排,三个整数a,b,c。(1<=a,b,c<=100)
第二排,三个整数x,y,z。(0<=x,y,z<=100)
第三排,四个整数sum,c1,c2,c3。(0<=sum<=10^12,1<=c1,c2,c3<=100)
符号的意义同题目描述中一样。

Output

对于每组,输出一排,这排只有一个整数,表示M78能组装的最多的机器人数。

Sample Input

1 2 3
100 100 100
300 7 8 9

Sample Output

44




解题心得

1、写这个博客的时候还是大一,写的很烂,后来看到很多学弟来看就把这个博客重新写了一遍。

2、这个题做法是二分答案,那么什么是二分答案呢,其实就是二分枚举出答案,然后将答案给带入题意中去检验,如果检验出来枚举的答案大了,那么就将这个答案二分减小,小了就二分变大。

#include <algorithm>
#include <stdio.h>
using namespace std; long long x,y,z,a,b,c,sum,c1,c2,c3; bool check(long long cnt) {
long long need_a = cnt*a;
long long need_b = cnt*b;
long long need_c = cnt*c;
long long need_money = 0;
need_money = max((long long)0,need_a - x)*c1 + max((long long)0,need_b-y)*c2 + max((long long)0,need_c-z)*c3;//要制作cnt个机器人将材料用完还需要使用的钱
if(need_money > sum)//如果需要使用的钱比当前的钱更大那么不符合条件,二分缩小
return true;
return false;
} long long binary_search() {
long long l = 0, r = 1e12, mid;
while(r - l > 1) {//闭区间是取在l的所以返回的是l
mid = (l+r)/2;//mid = (l+r)>>1;
if(check(mid))
r = mid;
else
l = mid;
}
return l;
} int main() {
while(scanf("%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld",&a,&b,&c,&x,&y,&z,&sum,&c1,&c2,&c3) != EOF) {
long long ans = binary_search();
printf("%lld\n", ans);
}
return 0;
}




二分答案:Poweroj2461-入门基础之二分答案(二分法的应用)的更多相关文章

  1. php面试题汇总二(基础篇附答案)

    介绍一些php常见面试题及答案,都是平时面试的时候经常会遇到的,小伙伴们仔细了解下吧.接着上一篇php面试题汇总一(基础篇附答案) 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义 ...

  2. php面试题汇总三(基础篇附答案)

    问题 1. 如何访问会话变量(session)? A.通过$_GET B.通过$_POST C.通过$_REQUEST D.通过全局变量 E.以上都不对 2. 哪个函数能让服务器输出如下 header ...

  3. C#基础第六天-作业答案-利用面向对象的思想去实现名片

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. python3--算法基础:二分查找/折半查找

    算法基础:二分查找/折半查找 #!/usr/bin/env python # -*- coding:utf-8 -*- # 算法基础:二分查找/折半查找 def binarySearch(dataSo ...

  5. Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发

    本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...

  6. C++ STL编程轻松入门基础

    C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...

  7. HTML入门基础教程相关知识

    HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...

  8. USB入门基础知识(转)

    源:USB入门基础知识 相关名词: 主机(Host) 设备(Device) 接口(Interface) 管道(Pipe) 管道是主机与设备端点数据传输的连接通道,代表了主机的数据缓冲区与设备端点之间交 ...

  9. C#语法——反射,架构师的入门基础。

    前言 编程其实就是写代码,而写代码目的就是实现业务,所以,语法和框架也是为了实现业务而存在的.因此,不管多么高大上的目标,实质上都是业务. 所以,我认为不要把写代码上升到科学的高度.上升到艺术就可以了 ...

随机推荐

  1. spring技术小结

    1.DI和IOC 依赖注入(Dependency Injection)还是控制反转(Inversion of Conctrol) bean通过依赖注入,注册到spring容器里面.spring容器通过 ...

  2. mysq表的三种关系,数据的增删改以及单表多表查询

    一丶三种关系 分析步骤: #.先站在左表的角度去找 是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段(通常是id) #.再站在右表的角度去找 ...

  3. RING0到RING3

    在前一篇文章里面,我们将了CPU保护模式中的几种特权RING0,RING1,RING2,RING3!操作系统通常运行在RING0,应用程序通常运行在RING3. CPU如何从RING0到RING3 先 ...

  4. Python开发环境Wing IDE设置Python路径详解

    在使用Wing IDE的时候,Python源代码取决于PYTHONPATH(无论是外部或通过内部改变sys.path系统设置),用户需要将路径设置到Wing IDE中. 这个值可以从项目菜单和工具栏的 ...

  5. React 官网列子学习

    一个有状态的组件 除了接受输入数据(通过 this.props ),组件还可以保持内部状态数据(通过this.state ).当一个组件的状态数据的变化,展现的标记将被重新调用render() 更新. ...

  6. DB错误代码大全

    db2错误代码大全  sqlcode sqlstate 说明000 00000 SQL语句成功完成01xxx SQL语句成功完成,但是有警告+012 01545 未限定的列名被解释为一个有相互关系的引 ...

  7. Js面向对象之观察者模式

    //模拟一个目标可能拥有的一些列依赖 function ObserverList() { this.observerList = []; }; //添加一个观察者 ObserverList.proto ...

  8. 景安快云VPS挂载数据盘至指定目录 使得系统与数据分离

    如果我们细心的用户会发现购买景安快云VPS主机后,通过df检测看到系统盘大小与我们购买时候给的不一样,这个是很正常的事情.一般VPS主机商会通过给予系统盘和数据盘一并的数据磁盘给我们,但是默认我们看到 ...

  9. 【Python音乐生成】这是一个超棒的dataset

    http://colinraffel.com/projects/lmd/

  10. Mac终端下使用***

    首先安装proxychains: brew install proxychains-ng 然后创建文件~/.proxychains/proxychains.conf,写入以下内容: strict_ch ...