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

蓝桥杯专项复习——二分

二分查找、二分答案基础知识

二分查找模版

【模版题】数的范围

输入样例

6 3
1 2 2 3 3 4
3
4
5

输出样例

3 4
5 5
-1 -1

思路:

对应两个模版,起始位置是对应第一个模版,即后面的都符合
终止位置对应第二个模拟,即前面的符合

#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N=100000+10;

int a[N];

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	
	int n,q;cin>>n>>q;
	for(int i=0;i<n;i++)
		cin>>a[i];
	while(q--)
	{
		int x;cin>>x;
		int l=0,r=n-1;
		while(l<r)//查找起始位置,右边符合 
		{
			int mid=(l+r)/2;
			if(a[mid]>=x)
				r=mid;
			else
				l=mid+1;
		}
		if(a[l]!=x)//不存在
			cout<<"-1 -1"<<endl;
		else//查找终止位置 
		{
			cout<<l<<' ';//将起始位置输出 
			l=0,r=n-1;
			while(l<r)
			{
				int mid=(l+r+1)/2;
				if(a[mid]<=x)
					l=mid;
				else
					r=mid-1;
			}
			//不用再判断是否存在 
			//输出终止位置 
			cout<<l<<endl;
		 } 
	}
	return 0;
 } 

借教室

输入样例1

4 3
2 5 4 3
2 1 3
3 2 4
4 2 4

输出样例1

2

说明1

第一份订单满足后,这四天剩余的教室数为{0,3,2,3}
第二份订单要求第二天到第四天每天提供3个教室,而第三天剩余的教室数为 2,
因此无法满足。分配停止,通知第二个申请人修改订单。

输入样例2

4 1
2 5 4 3
2 1 3

输出样例2

0

思路:

相关文章:

  • 《Fundamentals of Electromigration-Aware IntegratedCircuit Design》笔记
  • HTML中数字和字母不换行显示
  • 【C++游戏引擎开发】《线性代数》(5):四元数的3D旋转原理与实现(含新增Vector3、修改Matrix为非SIMD版本)
  • 【区块链安全 | 第十九篇】类型之映射类型
  • 【Node.js入门笔记12---npm包】
  • 聊聊Spring AI的RetrievalAugmentationAdvisor
  • Unity TextMeshPro 实现文本逐字淡出效果
  • 5.02 WPF的 Combox、ListBox,slider、ProgressBar使用
  • C语言--插入排序
  • Kafka+Zookeeper从docker部署到spring boot使用完整教程
  • Vue:生命周期
  • 2025年山东水利水电 C 证考试精选题库
  • android adb 查看设备传感器
  • JS实现动态点图酷炫效果
  • git命令简陋版本
  • MySQL 复制与主从架构(Master-Slave)
  • Day48 | 657. 机器人能否返回原点、31. 下一个排列、463. 岛屿的周长、1356. 根据数字二进制下 1 的数目排序
  • 嵌入式系统简介
  • PH热榜 | 2025-03-31
  • MTU | 检测 / 设置 / 相关问题解析
  • 购买网站空间的注意事项/查淘宝关键词排名软件
  • 天水做网站的/网络营销方式有哪几种
  • xml网站地图每天更新/泰州seo外包公司
  • 网站建设公司广告语/品牌设计公司排名前十强
  • wordpress男同/淘宝关键词优化怎么弄
  • 东营注册公司/香港seo公司