时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

有 n 棵树,初始时每棵树的高度为 Hi,第 i 棵树每月都会长高 Ai。现在有个木料长度总量为 S 的订单,客户要求每块木料的长度不能小于L,而且木料必须是整棵树(即不能为树的一部分)。现在问你最少需要等多少个月才能满足订单。

输入描述:

第一行 3 个用空格隔开的非负整数 n,S,L,表示树的数量、订单总量和单块木料长度限制。
第二行 n 个用空格隔开的非负整数,依次为 H1,H2,... ,Hn。
第三行 n 个用空格隔开的非负整数,依次为 A1,A2,... ,An。

输出描述:

输出一行一个整数表示答案。
示例1

输入

3 74 51
2 5 2
2 7 9

输出

7

说明

对于样例,在六个月后,各棵树的高度分别为 14,47,56,此时无法完成订单。
在七个月后,各棵树的高度分别为 16,54,65,此时可以砍下第 2 和第 3 棵树完成订单了。

备注:

1≤n≤200000,1≤S,L≤1018,1≤Hi,Ai≤109

【分析】:二分答案。上界不能直接选择1e18,会爆long long。根据一棵树能完成需求的时间最小值不断降低时间。
【代码】:
#include <bits/stdc++.h>
#define LL long long
#define maxn 200005 using namespace std;
LL a[maxn],h[maxn],S,L,mx;
int n; bool check(LL day)
{
LL ans=;
LL now;
for(int i=;i<=n;i++)
{
now = a[i]*day+h[i];//x是天数,a是步长(增量)一个一个的增,增完下一个
if(now>=L) ans+=now;
if(ans>=S) return true;
}
return false;
}
int main()
{
cin>>n>>S>>L;
for(int i=;i<=n;i++) cin>>h[i];
for(int i=;i<=n;i++) cin>>a[i],mx=max(mx,max(L,S)/a[i]);
LL l=,r=mx,ans=;
while(l<=r)
{
LL mid=(l+r)>>;
if(check(mid)) r=mid-;
else l=mid+;
}
cout<<l<<endl;
}

#include<iostream>
#include<set>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std; typedef unsigned long long ll; ll h[],a[];
ll sum;
int main()
{
ll n,S,L,i,j,l,r,m;
while(cin>>n>>S>>L)
{
l=;r=1e18;m=(l+r)/;
for(i=;i<n;i++)
scanf("%d",&h[i]);
for(i=;i<n;i++)
scanf("%d",&a[i]);
while(l<r)
{
sum=;
for(i=;i<n;i++)
{
ll x=h[i]+m*a[i];
if(x>=L)
sum+=x;
if(sum>=S)
break;
}
if(sum>=S)
{
r=m;
}
else
{
l=m+;
}
m=(l+r)/;
}
cout<<m<<"\n";
}
return ;
}

易懂

#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long ll;
int n;
ll s,l;
ll h[],a[];
int check(ll mid)
{
ll sum=;
for(int i=;i<=n;i++)
{
if(h[i]+a[i]*mid>=l) sum+=(h[i]+a[i]*mid);
if(sum>=s) return ;
}
return ;
}
ll maxx;
int main()
{
scanf("%d%lld%lld",&n,&s,&l);
for(int i=;i<=n;i++) scanf("%lld",&h[i]);
for(int i=;i<=n;i++) scanf("%lld",&a[i]),maxx=max(maxx,a[i]);
ll l=,r=1e18/maxx,mid,ans=;
while(l<=r)
{
mid=(l+r)/;
if(check(mid)) r=mid-,ans=mid;
else l=mid+;
}
printf("%lld",ans);
}

2

Code+ B 汀博尔【二分答案】的更多相关文章

  1. bzoj5106 [CodePlus2017]汀博尔 二分

    [CodePlus2017]汀博尔 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 202  Solved: 75[Submit][Status][Di ...

  2. bzoj5106: [CodePlus2017]汀博尔(二分答案)

    5106: [CodePlus2017]汀博尔 题目:传送门 题解: 百题纪念!!! 原谅一下第一百题刷了到水题... 直接二分月份然后判断(注意上界大小) 代码: #include<cstdi ...

  3. BZOJ 5106 [CodePlus2017]汀博尔

    [题解] 二分答案.r要设好,不能随便设置为max(s,len),不然check的时候会爆long long #include<cstdio> #include<algorithm& ...

  4. [LOJ 6249]「CodePlus 2017 11 月赛」汀博尔

    Description 有 n 棵树,初始时每棵树的高度为 H_i,第 i 棵树每月都会长高 A_i.现在有个木料长度总量为 S 的订单,客户要求每块木料的长度不能小于 L,而且木料必须是整棵树(即不 ...

  5. [CodePlus2017]汀博尔

    Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 158  Solved: 61[Submit][Status][Discuss] Description ...

  6. BZOJ5106: [CodePlus2017]汀博尔

    [传送门:BZOJ5106] 简要题意: 给出n棵树,初始高度为h[i],每棵树每个月长高a[i] 现有一个客户,需要至少s长的总木材,而且每次截取的木材必须是一整颗树而且高度大于等于L 求出最少的月 ...

  7. 【二分答案】Google Code Jam Round 1A 2018

    题意:有R个机器人,去买B件商品,有C个收银员,每个收银员有能处理的商品数量上限mi,处理单件商品所需的时间si,以及最后的装袋时间pi. 每个收银员最多只能对应一个机器人,每个机器人也最多只能对应一 ...

  8. NOIP2012疫情控制(二分答案+树上贪心)

    H 国有n个城市,这 n个城市用n-1条双向道路相互连通构成一棵树,1号城市是首都,也是树中的根节点. H国的首都爆发了一种危害性极高的传染病.当局为了控制疫情,不让疫情扩散到边境城市(叶子节点所表示 ...

  9. 洛谷P3964 [TJOI2013]松鼠聚会 [二分答案,前缀和,切比雪夫距离]

    题目传送门 松鼠聚会 题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以用一个点x,y表示, ...

随机推荐

  1. 打开Vim/Vi代码高亮

    由于新装Vim/Vi 默认是没有打开代码高亮配置的,就看到有朋友一次次到网上去找各种配置.其实Vim默认带来配置文件的样本的,只需拷贝过来就可使用. 在用户根目录(~)中新建vim的配置文件 .vim ...

  2. 第一天docker入门

    [01 入门] docker 最核心为三部分组成 镜像,仓库和容器 镜像:一个只读的模板 仓库:代码仓库,镜像的集合 容器:镜像的实例化进程 我们可以这样理解 容器就是一个沙箱,docker利用容器运 ...

  3. 易语言.开源(绝地求生多功能盒子)类似LOL盒子

    下载地址:https://pan.baidu.com/s/1OXwCjGJODkcZVrCwVixu3Q     成品地址:https://pan.lanzou.com/i0rmdwj

  4. Linux & Windows 查看 ip 地址

    Windows 查看本机 IP 打开 cmd,输入 ipconfig,回车,找到IPv4地址 或者通过以下方式查看 点击Win10系统的右下角的宽带连接图标,如下图所示.        点击弹出菜单的 ...

  5. Python 第一周编程作业

    一.  编程题 1.  结合turtle库使用手册,读懂下列代码,并在jupyter编译器中运行观察结果: 依次分析下代码: 第一行 通过保留字import引用了Python中用于绘制图形的turtl ...

  6. 团队项目-第一次Scrum 会议

    时间:10.23 时长:30分钟 地点:F楼2层沙发休息处 工作情况 团队成员 已完成任务 待完成任务 解小锐 学习使用cocos creator 学习官方样例 陈鑫 学习JavaScript 学习c ...

  7. JavaWeb笔记(九)Ajax&Json

    AJAX 实现方式 原生的JS实现方式 //1.创建核心对象 var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, C ...

  8. jQuery选择器之元素选择器

    元素选择器:根据给定(html)标记名称选择所有的元素. 描述: $('element') 搜索指定元素标签名的所有节点,这是一个合集的操作.同样的也有原生方法getElementsByTagName ...

  9. rsync同步数据

    1. rsync 命令格式rsync [OPTION]... SRC DESTrsync [OPTION]... SRC [USER@]HOST:DESTrsync [OPTION]... [USER ...

  10. [洛谷P4389]付公主的背包

    题目大意:有$n(n\leqslant10^5)$种物品,第$i$个物品体积为$v_i$,都有$10^5$件.给定$m(m\leqslant10^5)$,对于$s\in [1,m]$,请你回答用这些商 ...