题解 P4058 [Code+#1]木材
前言
这什么题啊,不就是个二分答案我从65到100都经历了一遍……(瞬间气哭)
\(\sf {Solution}\)
题目理解起来不难的,大意就懒得写了。
一眼二分答案。
此题属于在形如 \(\{0,0,0....1,1,1,\}\) 的序列中查找第一个 \(1\) 的题型。
算法流程:
- 初始化 \(l=0,r=inf\) ( \(r\) 尽可能大)。
- 如果 \(l=r\) ,停止循环。
- 计算中点 \(mid=\left\lfloor\dfrac{l+r}{2}\right\rfloor\)。
- 若等待 \(mid\) 个月满足条件, \(r=mid\) 。
- 否则 \(l=mid+1\) 。
- 回到2。
至于如何判断是否满足条件,写一个函数check一下就珂以了啦~
\(\sf {P.S.}\)
什么都要开unsigned long long,否则会WA的很惨。
\(\sf {Code}\)
#include<cstdio>
using namespace std;
unsigned long long n,s,k,mid,a[200005],h[200005];
bool check(unsigned long long x)
{
unsigned long long ans=0;
for(unsigned long long i=1;i<=n;++i)
if(h[i]+x*a[i]>=k)//超过要求高度的树计算在总长度范围内
ans+=h[i]+x*a[i];
if(ans>=s)
return true;
return false;//如果满足订单需求就返回true
}
int main()
{
scanf("%lld%lld%lld",&n,&s,&k);
for(int i=1;i<=n;++i)
scanf("%lld",&h[i]);
for(int i=1;i<=n;++i)
scanf("%lld",&a[i]);
unsigned long long l=0,r=10000000000000000;//l和r的初始化
while(l<r)
{
mid=(l+r)/2;
if(check(mid))
r=mid;
else l=mid+1;
}//二分
printf("%lld",l);//输出结果
return 0;
}
题解 P4058 [Code+#1]木材的更多相关文章
- 洛谷 P4058 [Code+#1]木材 题解
P4058 [Code+#1]木材 题目描述 有 \(n\) 棵树,初始时每棵树的高度为 \(H_i\),第 \(i\) 棵树每月都会长高 \(A_i\).现在有个木料长度总量为 $ S$ 的订单, ...
- Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) A B C D 水 模拟 并查集 优先队列
A. Broken Clock time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- 题解 Strange Housing
传送门 首先想了黑白染色,发现不会染 其实可以考虑如何动态地维护出这个点集 发现题面里对不在点集之中的点之间的连边没有要求 所以考虑不断向图中加点,为了满足要求,每次取一个与当前新图中相连的点 若它与 ...
- 【hihocoder#1413】Rikka with String 后缀自动机 + 差分
搞了一上午+接近一下午这个题,然后被屠了个稀烂,默默仰慕一晚上学会SAM的以及半天4道SAM的hxy大爷. 题目链接:http://hihocoder.com/problemset/problem/1 ...
- Codeforces Round #378 (Div. 2) A B C D 施工中
A. Grasshopper And the String time limit per test 1 second memory limit per test 256 megabytes input ...
- poj 3463 最短路与次短路的方案数求解
Sightseeing Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8968 Accepted: 3139 Descr ...
- HDU 2509 nim博弈
Be the Winner Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- Codeforces Round #377 (Div. 2) A B C D 水/贪心/贪心/二分
A. Buy a Shovel time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- Codeforces Round #376 (Div. 2) A B C 水 模拟 并查集
A. Night at the Museum time limit per test 1 second memory limit per test 256 megabytes input standa ...
随机推荐
- 深入理解Spring注解机制(一):注解的搜索与处理机制
前言 众所周知,spring 从 2.5 版本以后开始支持使用注解代替繁琐的 xml 配置,到了 springboot 更是全面拥抱了注解式配置.平时在使用的时候,点开一些常见的等注解,会发现往往在一 ...
- win10+Android(华为)系统原生日历同步方案+Sol日历桌面显示
前言:本文是参考了其他博客基础上,新增了Android的免费桌面[月试图显示]功能.以及适配于上海交通大学的Canvas教学日历.方便进行多设备同步的日历管理.任务提醒. 目录 1.效果展示 2.方案 ...
- RabbitMQ 入门系列:9、扩展内容:死信队列:真不适合当延时队列。
系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...
- Linux软件包常见的几种下载、安装方法
在线源下载和安装 如果服务器是处于在线状态,在使用默认下载源是外国的情况下,安装更新软件包往往会比较痛苦的存在,下载了许久来一个超时就gg了.国内有许多镜像源,完美的解决了这个问题. 对于rpm系列的 ...
- 【读书笔记】C#高级编程 第十章 集合
(一)概述 数组的大小是固定的.如果元素个数是动态的,就应使用集合类. List<T>是与数组相当的集合类.还有其它类型的集合:队列.栈.链表.字典和集. (二)列表 1.创建列表 调用默 ...
- React版/Vue版都齐了,开源一套【特别】的后台管理系统...
本项目主要基于Elux+Antd构建,包含React版本和Vue版本,旨在提供给大家一个简单基础.开箱即用的后台管理系统通用模版,主要包含运行环境.脚手架.代码风格.基本Layout.状态管理.路由管 ...
- 从Java 9 到 Java 17 新特性梳理
Java 9 新的创建集合的方法 // [1, 2, 3, 4] List<Integer> integers = List.of(1, 2, 3, 4); // {1,2,3} ...
- 胎压监测系统(DWS)
胎压监测系统(DWS)通过监测和比较行驶时各车轮和轮胎的滚动半径和旋转特性,以确定是否一个或多个轮胎明显充气不足,而非直接测量各轮胎的压力. 系统监测到异常时指示灯将点亮,且仪表上出现信息. 必须校准 ...
- Solutions:Elastic workplace 搜索:随时随地搜索所有内容 (二)
- Solutions:Elastic SIEM - 适用于家庭和企业的安全防护 ( 三)