当前位置: 首页 > article >正文

复活之我会二分

文章目录

      • 整数二分模板
          • 模板1:满足条件的第一个数
          • 模板2:满足条件的最后一个数
      • 浮点数二分模板
      • 一、Building an Aquarium
          • 思路分析
          • 具体代码
      • 二、Tracking Segments
          • 思路分析
          • 具体代码
      • 三、Wooden Toy Festival
          • 思路分析
          • 具体代码
      • 四、路标设置
          • 思路分析
          • 具体代码
      • 五、木材加工
          • 思路分析
          • 具体代码

整数二分模板

模板1:满足条件的第一个数
int bianrysearch(int l, int r) {while (l < r) {int mid = l + r >> 1;if (check(mid)) r = mid;else  l = mid + 1;} return l;
}
模板2:满足条件的最后一个数
int bianrysearch(int l, int r) {while (l < r) {int mid = l + r + 1 >> 1;if (check(mid)) l = mid;else  r = mid - 1;}return l;
}

浮点数二分模板

double bianrysearch(double l, double r) {double eps = 1e-6;   while (r - l > eps) {double mid = (l + r) / 2;if (check(mid)) r = mid;else l = mid;}return l;
}

一、Building an Aquarium

Building an Aquarium

思路分析

二分

具体代码
#include <cstdio>
#include <iostream>using namespace std;
typedef long long ll;const int N = 2e5 + 10;
ll t, n, x;
ll a[N];bool check(ll mid) {ll sum = 0;for (int i = 1; i <= n; i++){if (a[i] < mid) sum += mid - a[i];}	return sum <= x;
}int main() {scanf("%lld", &t);while (t--) {scanf("%lld%lld", &n, &x);for (int i = 1; i <= n; i++) {scanf("%lld", &a[i]);}ll l = 1, r = 2e9 + 10;while (l < r) {ll mid = l + r + 1 >> 1;if (check(mid)) l = mid;else r = mid - 1;}printf("%lld\n", l);}return 0;
}

二、Tracking Segments

Tracking Segments

思路分析

二分+前缀和

具体代码
#include <cstdio>
#include <iostream>
#include <cstring>using namespace std;typedef long long ll;const int N = 1e5 + 10;int t, n, m, q;
int s[N], pos[N];
ll preSum[N];struct node{int x, y;
}a[N];bool check(int mid) {for (int i = 1; i <= n; i++) s[i] = 0;for (int i = 1; i <= mid; i++)	s[pos[i]] = 1;for (int i = 1; i <= n; i++) {preSum[i] = preSum[i - 1] + s[i];}for (int i = 1; i <= m; i++) {if (2 * (preSum[a[i].y ] - preSum[a[i].x - 1]) > a[i].y - a[i].x + 1)	return true;}return false;
}int main() {cin >> t;while(t--) {cin >> n >> m;for (int i = 1; i <= m; i++) {cin >> a[i].x >> a[i].y;}cin >> q;for (int i = 1; i <= q; i++) {cin >> pos[i];}if (!check(q)) {puts("-1");continue;}	int l = 1, r = q;while (l < r) {int mid = l + r >> 1;if (check(mid)) r = mid;else l = mid + 1;}cout << l << endl;}return 0;
}

三、Wooden Toy Festival

Wooden Toy Festival

思路分析

二分

具体代码
#include <cstdio>
#include <iostream>
#include <algorithm>using namespace std;const int N = 2e5 + 10;int t, n;
int a[N];bool check(int mid) {int idx = 0, t1 = a[0] + 2 * mid;while (a[idx] <= t1 && idx < n) idx++;t1 = a[idx] + 2 * mid;while (a[idx] <= t1 && idx < n) idx++;t1 = a[idx] + 2 * mid;while (a[idx] <= t1 && idx < n) idx++;if (idx == n) return true;return false;
}int main() {cin >> t;while (t--) {cin >> n;int l = 0, r; for (int i = 0; i < n; i++) {cin >> a[i];}sort(a, a + n);r = a[n - 1];while (l < r) {int mid = l + r >> 1;if (check(mid)) r = mid;else l = mid + 1;}		cout << l << endl;}return 0;
}

四、路标设置

路标设置

思路分析

二分,注意check函数写法

具体代码
#include <cstdio>
#include <iostream>
#include <algorithm>using namespace std;typedef long long ll;const int N = 100000 + 10;
ll len, n, k;
ll a[N];bool check(int mid) {ll dif = 0;for (int i = 1; i < n; i++) {dif += (a[i] - a[i - 1] - 1) / mid;}return dif <= k;
}int main() {cin >> len >> n >> k;ll l = 1, r = len;for(int i = 0; i < n; i++) {cin >> a[i];} sort(a, a + n);while (l < r) {ll mid = l + r >> 1;if (check(mid)) r = mid;else l = mid + 1;}cout << l << endl;return 0;
}

五、木材加工

木材加工

思路分析

二分

具体代码
#include <cstdio>
#include <iostream>using namespace std;typedef long long ll;
const int N = 1e5 + 10;int n, k;
ll a[N];bool check(ll mid) {ll sum = 0;for (int i = 0; i < n; i++) sum += a[i] / mid;	return sum >= k;
}int main() {ll l = 0, r = 0;cin >> n >> k;for (int i = 0; i < n; i++) {scanf("%lld", &a[i]);r += a[i];} while(l < r) {ll mid = l + r + 1 >> 1;if (check(mid)) l = mid; else  r = mid - 1;}cout << l <<endl;return 0;
}

相关文章:

复活之我会二分

文章目录 整数二分模板模板1&#xff1a;满足条件的第一个数模板2&#xff1a;满足条件的最后一个数 浮点数二分模板一、Building an Aquarium思路分析具体代码 二、Tracking Segments思路分析具体代码 三、Wooden Toy Festival思路分析具体代码 四、路标设置思路分析具体代码 …...

NOA是什么?国内自动驾驶技术的现状是怎么样的?

国内自动驾驶技术的现状如何&#xff1f; 汽车的NOA指的是“Navigate on Autopilot”&#xff0c;即导航辅助驾驶或领航辅助驾驶。这是一种高级驾驶辅助系统&#xff08;ADAS&#xff09;的功能&#xff0c;它允许车辆在设定好起点和终点后&#xff0c;自动完成行驶、超车、变…...

秒杀系统的性能优化

秒杀任务总体QPS预期是每秒几十万&#xff0c;对tomcat、redis、JVM参数进行优化。 tomcat线程数 4核8G的机器&#xff0c;一般就是开200-300个工作线程&#xff0c;这是个经验值。每秒一个线程处理3-5个请求&#xff0c;200多个线程的QPS可以达到1000左右。线程不能太多&…...

Linux 指令初探:开启终端世界的大门

前言 当我们初次接触 Linux&#xff0c;往往会被一串串在黑底屏幕中跳动的字符震撼甚至吓退。然而&#xff0c;正是这些看似晦涩的命令&#xff0c;构建了服务器、嵌入式系统乃至云计算的世界。 本篇将带你从最基础的 Linux 指令开始&#xff0c;逐步揭开命令行的神秘面纱。从…...

Edge浏览器IE兼容模式设置

一、了解Edge浏览器的IE模式 Microsoft Edge&#xff0c;作为微软推出的新一代浏览器&#xff0c;不仅拥有更快的浏览速度、更强大的安全性能以及更现代的界面设计&#xff0c;还巧妙地解决了与旧网站和应用程序的兼容性问题。通过内置的IE模式&#xff0c;Edge能够模拟IE浏览器…...

文件中魔数

当然可以&#xff0c;来讲几个实际开发中魔数会“救你一命”的场景&#xff0c;帮助你更直观地理解它的作用。 &#x1f3af; 场景 1&#xff1a;误读取非 SST 文件 假设你有一段代码在扫描一个目录&#xff0c;尝试打开所有 .sst 后缀的文件并加载&#xff1a; cpp 复制 编辑…...

制定大运维管理体系的标准、流程、机制、规范

规划并制定大运维管理体系的标准、流程、机制、规范&#xff0c;对于确保平台的可用性和稳定性至关重要。这一过程涉及从顶层设计到具体执行的全面考量&#xff0c;需要综合考虑业务需求、技术架构、团队能力等多方面因素。以下是一个基本框架&#xff0c;用于指导如何构建有效…...

算法初识-时间复杂度空间复杂度

注&#xff1a;观看Adbul Bari算法视频 算法概念 算法&#xff1a;先验分析&#xff0c;不依托于硬件&#xff0c;无语言限制&#xff0c;逻辑。 程序&#xff1a;后验测试&#xff0c;依托硬件&#xff0c;语言限制&#xff0c;实现。 特点&#xff1a; 输入-0或多个输出-至…...

Python高阶函数-sorted(深度解析从原理到实战)

一、sorted()函数概述 sorted()是Python内置的高阶函数&#xff0c;用于对可迭代对象进行排序操作。与列表的sort()方法不同&#xff0c;sorted()会返回一个新的已排序列表&#xff0c;而不改变原数据。 基本语法 sorted(iterable, *, keyNone, reverseFalse)二、核心参数详…...

Vue3实战三、Axios封装结合mock数据、Vite跨域及环境变量配置

目录 Axios封装、调用mock接口、Vite跨域及环境变量配置封装Axios对象调用mock接口数据第一步、安装axios&#xff0c;处理一部请求第二步、创建request.ts文件第三步、本地模拟mock数据接口第四步、测试axiosmock接口是否可以调用第五步、自行扩展 axios 返回的数据类型 axios…...

机器学习(神经网络基础篇)——个人理解篇5(梯度下降中遇到的问题)

在神经网络训练中&#xff0c;计算参数的梯度是关键步骤。numerical_gradient 方法旨在通过数值微分&#xff08;中心差分法&#xff09;计算损失函数对网络参数的梯度。然而&#xff0c;该方法的实现存在一个关键问题&#xff0c;导致梯度计算错误。 1、错误代码示例&#xf…...

sklearn的Pipeline

Pipeline类 介绍:Pipeline 可以将多个数据处理步骤和机器学习模型组合成一个序列,其中每个步骤都是一个变换器(Transformer)或者估计器(Estimator),并且Pipeline中的最后一个必须为估计器,其它的必须为变换器,如果Pipeline中的估计器为为分类器则整个Pipeline就作为分…...

【Linux】虚拟机设置静态IP

主播我今天下午学了几节微服务课&#xff0c;上课的时候&#xff0c;直接把手机拿走了去上课&#xff08;电脑连的我手机的热点&#xff09;&#xff0c;虚拟机没关&#xff0c;晚上主播我回来继续学&#xff0c;电脑连上热点之后&#xff0c;发现虚拟机连接不上了&#xff0c;…...

职坐标解析自动驾驶技术发展新趋势

内容概要 作为智能交通革命的核心驱动力&#xff0c;自动驾驶技术正以惊人的速度重塑出行生态。2023年&#xff0c;行业在多传感器融合与AI算法优化两大领域实现突破性进展&#xff1a;激光雷达、摄像头与毫米波雷达的协同精度提升至厘米级&#xff0c;而深度学习模型的实时决…...

js算法基础-01

文章目录 1、双指针2、快慢指针3、滑动指针4、哈希表5、汇总区间6、栈7、进制求和8、数学9、动态规划 js算法基础, 每个重要逻辑思路&#xff0c;做一下列举 1、双指针 有序数组合并&#xff1a;一般思路就是合并、排序&#xff0c;当然效率略低题目1&#xff1a;nums1中取前m个…...

了解 DeepSeek R1

了解DeepSeek R1 R1探索纯强化学习是否可以在没有监督微调的情况下学会推理的能力。 ‘Aha’ Moment 这种现象有点类似于人类在解决问题时突然意识到的方式&#xff0c;以下是它的工作原理&#xff1a; 初始尝试&#xff1a;模型对解决问题进行初始尝试识别&#xff1a;识别…...

局域网:电脑或移动设备作为主机实现局域网访问

电脑作为主机 1. 启用电脑的网络发现、SMB功能 2. 将访问设备开启WIFI或热点&#xff0c;用此电脑连接&#xff1b;或多台设备连接到同一WIFI 3. 此电脑打开命令行窗口&#xff0c;查看电脑本地的IP地址 Win系统&#xff1a;输入"ipconfig"&#xff0c;回车后如图 4.…...

小型园区组网图

1. 在小型园区中&#xff0c;S5735-L-V2通常部署在网络的接入层&#xff0c;S8700-4通常部署在网络的核心&#xff0c;出口路由器一般选用AR系列路由器。 2. 接入交换机与核心交换机通过Eth-Trunk组网保证可靠性。 3. 每个部门业务划分到一个VLAN中&#xff0c;部门间的业务在C…...

数据分享:汽车测评数据

说明&#xff1a;如需数据可以直接到文章最后关注获取。 1.数据背景 Car Evaluation汽车测评数据集是一个经典的机器学习数据集&#xff0c;最初由 Marko Bohanec 和 Blaz Zupan 创建&#xff0c;并在 1997 年发表于论文 "Classifier learning from examples: Common …...

python小整数池和字符串贮存

在Python中&#xff0c;**小整数池**是一种优化机制&#xff0c;用于减少内存使用和加速小整数的创建。 ### 小整数池的工作原理 - **范围**&#xff1a;Python会预先创建并缓存-5到256之间的整数对象。这些对象在解释器启动时就已经创建&#xff0c;并且会一直驻留在内存中。…...

批量将 txt/html/json/xml/csv 等文本拆分成多个文件

我们的文本文件太大的时候&#xff0c;我们通常需要对文本文件进行拆分&#xff0c;比如按多少行一个文件将一个大的文本文件拆分成多个小的文本文件。这样我们在打开或者传输的时候都比较方便。今天就给大家介绍一种同时对多个文本文件进行批量拆分的方法&#xff0c;可以快速…...

Vue3 路由权限管理:基于角色的路由生成与访问控制

Vue3 路由权限管理&#xff1a;基于角色的路由生成与访问控制 一、核心概念 1.1 大致流程思路&#xff1a; 用户在登录完成的时候&#xff0c;后端给出一个此登录用户对应的角色名字&#xff0c;此时可以将这个用户的角色存起来(vuex/pinia)中&#xff0c;在设置路由时的met…...

LLM Agents的历史、现状与未来趋势

引言 大型语言模型&#xff08;Large Language Model, LLM&#xff09;近年在人工智能领域掀起革命&#xff0c;它们具备了出色的语言理解与生成能力。然而&#xff0c;单纯的LLM更像是被动的“回答者”&#xff0c;只能根据输入给出回复。为了让LLM真正“行动”起来&#xff…...

忘记mysql的root用户密码(已解决)

1、打开数据库可视化界面&#xff08;比如MySQL workbench&#xff09; 2、执行select host,user,authentication_string from mysql.user; 3、把‘authentication_string’下面的字段 复制到MD5在线解密网页中&#xff08;比如md5在线解密&#xff09;...

【Pandas】pandas DataFrame set_flags

Pandas2.2 DataFrame Attributes and underlying data 方法描述DataFrame.index用于获取 DataFrame 的行索引DataFrame.columns用于获取 DataFrame 的列标签DataFrame.dtypes用于获取 DataFrame 中每一列的数据类型DataFrame.info([verbose, buf, max_cols, …])用于提供 Dat…...

Vue3.2 项目打包成 Electron 桌面应用

本文将详细介绍如何将基于 Vue3.2 的项目打包成 Electron 桌面应用。通过结合 Electron 和 Vue CLI 工具链&#xff0c;可以轻松实现跨平台桌面应用的开发与发布。 1. 项目结构说明 项目主要分为以下几个部分&#xff1a; electron/main.js&#xff1a;Electron 主进程文件。…...

git stash pop 后反悔操作

当使用 git stash pop 应用并删除某个存储&#xff08;stash&#xff09;后&#xff0c;如果想撤销该操作&#xff08;即恢复工作目录到 pop 前的状态&#xff0c;并重新将存储放回存储栈&#xff09;&#xff0c;可以按以下步骤操作&#xff1a; 1 强制丢弃所有未提交的更改&…...

Spring Boot 集成 MongoDB 时自动创建的核心 Bean 的详细说明及表格总结

以下是 Spring Boot 集成 MongoDB 时自动创建的核心 Bean 的详细说明及表格总结&#xff1a; 核心 Bean 列表及详细说明 1. MongoClient 类型&#xff1a;com.mongodb.client.MongoClient作用&#xff1a; MongoDB 客户端核心接口&#xff0c;负责与 MongoDB 服务器建立连接、…...

TypeScript面试题集合【初级、中级、高级】

初级面试题 什么是TypeScript&#xff1f; TypeScript是JavaScript的超集&#xff0c;由Microsoft开发&#xff0c;它添加了可选的静态类型和基于类的面向对象编程。TypeScript旨在解决JavaScript的某些局限性&#xff0c;比如缺乏静态类型和基于类的面向对象编程&#xff0c…...

ubuntu 20.04 编译和运行SC-LeGo-LOAM

1.搭建文件目录和clone代码 mkdir -p SC-LeGo-LOAM/src cd SC-LeGo-LOAM/src git clone https://github.com/AbangLZU/SC-LeGO-LOAM.git cd .. 2.修改代码 需要注意的是原作者使用的是Ouster OS-64雷达&#xff0c;需要更改utility.h文件中适配自己的雷达类型&#xff0c;而…...