首页 > 其他分享 >P8481 Binary search

P8481 Binary search

时间:2023-09-08 09:45:06浏览次数:33  
标签:P8481 Binary search int cnt dfs flag 取整 ans

题目传送门

思路提供

由于题目中询问的是最小需要的查找次数,但是正常的二分查找是不满足我们这道题目的(标准的二分是自定义向下取整,但是没有考虑向上取整的情况),但是只要我们便利出每一种情况(即向上取整和向下取整)就可以了,而 DFS 作为一种暴力的算法,就能够有效的便利全部情况,这样的话,我们再在其中取出每一种情况的最小值就能有效地解决问题了。

AC code

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,flag,ans=1e9;
int a[10000005];
void dfs(int cnt,int l,int r){
	if(l==r && a[l]==flag){
		ans=min(ans,cnt);//找到答案就记录ans的值
		return ;//不返回会导致死循环
	}
	else{
		int mid1=(l+r)>>1,mid2=(l+r+1)>>1;//这里要考虑向上和向下取整
		if(a[mid1]>=flag){
			dfs(cnt+1,l,mid1);
		}
		else{
			dfs(cnt+1,mid1+1,r);
		}
		if(a[mid2]-1>=flag){
			dfs(cnt+1,l,mid2-1);
		}
		else{
			dfs(cnt+1,mid2,r);
		}//与题目中随机化类似的判断,用来便利全部情况
	}
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	cin>>m;//按照题意输入
	while(m--){
		scanf("%d",&flag);
		ans=1e9;//先将答案赋值为极大值,因为我们要取的是最小值
		dfs(0,1,n);
		cout<<ans<<endl;//换行符一定要留下
	}
	return 0;
}

标签:P8481,Binary,search,int,cnt,dfs,flag,取整,ans
From: https://www.cnblogs.com/is-02/p/17686677.html

相关文章

  • IndexSearch中增量索引使用reopen
    publicIndexSearchernewIndexSearcher(){ try{ if(null==isearcher){ isearcher=newIndexSearcher(IndexReader.open("D:/Index")); }else{ IndexReaderindexReader=isearcher.getIndexReader();//获取当前的indexReader if(!in......
  • ElasticSearch系列——查询、Python使用、Django/Flask集成、集群搭建,数据分片、位置
    @目录Elasticsearch之-查询一基本查询1.1match查询1.2term查询1.3terms查询1.4控制查询的返回数量(分页)1.5match_all查询1.6match_phrase查询1.7multi_match1.8指定返回的字段1.9sort结果排序1.10range范围查询1.11wildcard查询二组合查询2.1bool查询2.2简单过滤......
  • Elasticsearch环境搭建
    一、安装elasticsearch--拉取镜像dockerpulldocker.elastic.co/elasticsearch/elasticsearch:8.9.1--创建docker网络dockernetworkcreateelastic--启动容器,-m设置内存大小dockerrun--namees01--netelastic-p9200:9200-p9300:9300-it-m1GBdoc......
  • Elasticsearch7.8集群实践记录之下线节点
    1.背景:由于机房迁移需要将elasticsearch集群进行跨机房搬迁,采取先扩容再收缩的方式进行,已有效减小对业务环境的影响。当前需要将老的节点有序下线。2.操作步骤:  1.检查集群配置,保证主节点的可用性;   #设置minimum_master_nodes为2curl-XPUT'http://hostname:9......
  • Elasticsearch7.8集群实践记录
    1.背景:当需要开发团队搭建自有elasticsearch集群时候,需要先明确具体的应用场景,进而对可用性,性能以及容量进行评估。当前实践记录主要应用场景在于业务日志记录短暂保存以便提供近期数据查询,并选择elasticsearch版本7.8.0,可用性要求三个9,每日数据量月1.5T,数据保存大约1周;2.配置项......
  • Elasticsearch
    ES(分布式、开源、查询)传统数据一般会分三个方向:结构化数据、非结构化数据、半结构化数据结构化数据:一般每个字段之间都是有关系的,例如mysql的主键唯一id代表了该条数据的唯一定位(mysql、mongodb)非结构化数据:无法用二维表结构来设计,文章、日志、视频、图片等等(mongodb、redis)......
  • Elasticsearch系列
    Elasticsearch介绍Elasticsearch系列之-linux.docker安装和基础操作Elasticsearch系列之-windows安装和基础操作Elasticsearch系列之-查询......
  • 喜讯!极限科技再次中标中国移动云 Elasticsearch 自研版技术开发服务项目!
    喜讯!极限科技再次中标中国移动云Elasticsearch自研版技术开发服务项目!近日,极限科技再次成功中标中国移动苏州研发中心《云能力中心2023—2024年移动云Elasticsearch自研版技术开发服务项目》。实现了个性化搜索及聚合分析,更稳定可靠地支持万亿级数据规模,为移动云系统提供......
  • 喜讯!极限科技再次中标中国移动云 Elasticsearch 自研版技术开发服务项目!
    喜讯!极限科技再次中标中国移动云Elasticsearch自研版技术开发服务项目!近日,极限科技再次成功中标中国移动苏州研发中心《云能力中心2023—2024年移动云Elasticsearch自研版技术开发服务项目》。实现了个性化搜索及聚合分析,更稳定可靠地支持万亿级数据规模,为移动云系统提......
  • elasticsearch wildcard 慢查询原因分析(深入到源码!!!)
    大家好,我是蓝胖子,前段时间线上elasticsearch集群遇到多次wildcard产生的性能问题,elasticsearchwildcard一直是容易引发elasticsearch容易宕机的一个风险点,但究竟它为何消耗cpu呢?又该如何理解elasticsearchprofileapi的返回结果呢?在探索了部分源码后,我将在这篇文章一一揭......