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

二分查找(基础)

竞赛中心 - 蓝桥云课

#include <iostream>
#include<bits/stdc++.h> 
using namespace std;
#define int long long
int N;
struct NO
{int A,B;
}a[10001];
bool ok(int V)
{for (int i = 0; i < N; ++i){if (a[i].A / V != a[i].B){return false;}}return true;
}
signed main()
{// 请在此输入您的代码cin>>N;for(int i=0;i<N;i++){cin>>a[i].A>>a[i].B;}int L=1; int R=1e9;for(int i=0;i<N;i++){L=max(L,a[i].A/(a[i].B+1)+1);}for(int i=0;i<N;i++){R=min(R,a[i].A/a[i].B);}int l=L;int r=R;int result1=l;int result2=r;while(l<=r){int mid=(l+r)/2;if(ok(mid)){result1=mid;r=mid-1;}else{l=mid+1;}}cout<<result1<<" ";l=L;r=R;while(l<=r){int mid=(l+r)/2;if(ok(mid)){result2=mid;l=mid+1;}else{r=mid-1;}}cout<<result2;return 0;
}

通过数学知识不难想出V的最大值与最小值在一定的范围内,找出这个范围再用二分查找的方法找到最大值与最小值。

定义判断函数,判断得到的值是否符合题目要求:

bool ok(int V)
{for (int i = 0; i < N; ++i){if (a[i].A / V != a[i].B){return false;}}return true;
}

将范围内的中间值作为结果,在确定最小值时,如果在中间值符合题目要求,就要在左边界到中间值这个范围内进行搜索。反之,则在另一个范围内搜索。在确定最小值时则正好相反。

http://www.dtcms.com/a/309380.html

相关文章:

  • 启动中国蚁剑
  • 东芝时钟控制的双极步进电机驱动器TB67S209FTG
  • 关于皮带机流水线的控制思想解析
  • Sklearn 机器学习 文本数据 TF-IDF实现文本向量化
  • Linux 内存管理之 Rmap 反向映射
  • 每天一点跑步运动小知识
  • 使用gcc代替v语言的tcc编译器提高编译后二进制文件执行速度
  • 分布在背侧海马体CA1区域的位置细胞(place cells)对NLP中的深层语义分析的积极影响和启示
  • Ⅹ—6.计算机二级综合题23---26套
  • CIFAR10实战
  • gitlab+jenkins的ci/cd部署
  • 报错[Vue warn]: Failed to resolve directive: else如何解决?
  • PyTorch分布式训练:从入门到精通
  • 什么是CI/CD?
  • python学智能算法(三十))|SVM-KKT条件的数学理解
  • 测试平台如何重塑CI/CD流程中的质量协作新范式
  • LLM Prompt与开源模型资源(1)提示词工程介绍
  • 全新发布|知影-API风险监测系统V3.3,AI赋能定义数据接口安全新坐标
  • HTML无尽射击小游戏包含源码,纯HTML+CSS+JS
  • Redis 中 ZipList 的级联更新问题
  • Dockerfile详解 笔记250801
  • fingerprintjs/botd爬虫监听
  • Ajax笔记
  • SD-WAN在煤矿机械设备工厂智能化转型中的应用与网络架构优化
  • ansible.cfg 配置文件的常见配置项及其说明
  • AI量化模型解析黄金3300关口博弈:市场聚焦“非农数据”的GRU-RNN混合架构推演
  • 【立体标定】圆形标定板标定python实现
  • MySQL学习从零开始--第六部分
  • PyTorch 分布式训练全解析:从原理到实践
  • 数据仓库、数据湖与湖仓一体技术笔记