首页 > 其他分享 >CF1793C Dora and Search

CF1793C Dora and Search

时间:2023-12-12 21:23:03浏览次数:30  
标签:... Search min max 样例 CF1793C Dora 端点 leqslant

CF1793C Dora and Search Difficulty:1200

题意翻译

题目描述

给定一个长度为 \(n\) 的排列 \(a\) ,问是否存在正整数 \(l,r\) 使得 \(a_l,a_r\) 均不为 \(a_{l...r}\) 中的最大值或最小值。

输入输出格式

第一行一个正整数 \(t\) ,表示数据组数。接下来对于每组数据输入包括两行,第一行一个正整数 \(n\) ,第二行 \(n\) 个正整数代表排列 \(a\) 。
对于每组数据,若存在符合要求的 \(l,r\) ,输出任意一组。若不存在则输出 \(-1\) 。

数据范围

$1\leqslant t \leqslant 10\ 000\ ,\ 1\leqslant \Sigma n \leqslant 200\ 000\ ,\ $ \(a\) 是一个排列。

输入输出样例

输入样例 #1

4
3
1 2 3
4
2 1 4 3
7
1 3 2 4 6 5 7
6
2 3 6 5 4 1

输出样例 #1

-1
1 4
2 6
-1

说明

对于第一组样例,\((l,r)={(1,2),(1,3),(2,3)}\)时都不能满足 \(min(a_l,a_{l+1}...a_r)或max(a_l,a_{l+1}...a_r)≠a_l或a_r\)

对于第二组样例,当 \(l=1,r=4\) 时, \(min(2,1,4,3)=1,max(2,1,4,3)=4,minpos=2,maxpos=3\) 符合题意

题解

本题思路为双指针,左指针 \(l\) 和右指针 \(r\) 分别初始为\(1\)和\(n\) ,因此。如果不符合条件则有四种情况

  1. 左端点 \(l\) = \(min(a_l,a_{l+1},...,a_r)\) 那么最小值+1,\(l => l+1\)
  2. 右端点 \(r\) = \(min(a_l,a_{l+1},...,a_r)\) 那么最小值+1,\(r => r-1\)
  3. 左端点 \(l\) = \(max(a_l,a_{l+1},...,a_r)\) 那么最大值-1,\(l => l+1\)
  4. 右端点 \(r\) = \(max(a_l,a_{l+1},...,a_r)\) 那么最大值-1,$
每次都需要往中间并拢,因为你无论如何都不能通过以这个节点为l或r,找到一组满足要求的l和r

参考代码

void solve()
{
	cin>>n;
	for(int i=1;i<=n;i++)scanf("%d",a+i); 
	int ansl=1,ansr=n,minx=1,maxx=n;
	//双指针,从左右端点开始向中间靠拢,不满足条件移动指针,并修改min(al-ar) or max(al-ar) 
	while(ansl<=ansr)
	{
		if(a[ansl]==minx)ansl++,minx++;
		else if(a[ansl]==maxx)ansl++,maxx--;
		else if(a[ansr]==minx)ansr--,minx++;
		else if(a[ansr]==maxx)ansr--,maxx--;
		else break;
	}
	if(ansl>ansr)puts("-1");
	else printf("%d %d\n",ansl,ansr);
}

标签:...,Search,min,max,样例,CF1793C,Dora,端点,leqslant
From: https://www.cnblogs.com/WYX1210/p/17897849.html

相关文章

  • elasticsearch安装-集群
    下载安装包国内镜像,速度非常快https://mirrors.huaweicloud.com/elasticsearch/https://mirrors.huaweicloud.com/kibana/wgethttps://mirrors.huaweicloud.com/elasticsearch/7.9.3/elasticsearch-7.9.3-linux-x86_64.tar.gz安装准备3台机器:1、安装目录:/usr/local/elas......
  • 从根上理解elasticsearch(lucene)查询原理(2)-lucene常见查询类型原理分析
    大家好,我是蓝胖子,在上一节我提到要想彻底搞懂elasticsearch慢查询的原因,必须搞懂lucene的查询原理,所以在上一节我分析了lucene查询的整体流程,除此以外,还必须要搞懂各种查询类型内部是如何工作,比如比较复杂的查询是将一个大查询分解成了小查询,然后通过对小查询的结果进行合并得到......
  • ElasticSearch之Node query cache settings
    对于filter查询,ElasticSearch提供了缓存查询结果的特性,当缓存中存在满足查询条件要求的数据时,直接从缓存中提取查询结果。对于ElasticSearch节点,该节点上的所有shard共享同一个缓存区域。ElasticSearch基于LRU算法来管理缓存中的数据,当空间不足以承载最新的查询操作的结果时,使用......
  • [Codeforces] CF1793C Dora and Search
    CF1793CDoraandSearch题意给定一个长度为\(n\)的排列\(a\),问是否存在正整数\(l,r\)使得\(a_l,a_r\)均不为\(a_{l...r}\)中的最大值或最小值。思路很明显的双指针,虽然我最开始的思路是二分预处理当前序列的最大值和最小值,并且一旦两段的\(l,r\)中有一个是最大或......
  • 11.Demonstrate the essentials concerning "Abstract" in research papers,such as f
    11.Demonstratetheessentialsconcerning"Abstract"inresearchpapers,suchasfeatures,types,andcomponents.演示研究论文中关于“摘要”的要点,如特点、类型和组成部分。Round1:IntroductiontotheAbstractSpeaker1(ResearcherA):Ladiesandgentlemen,than......
  • Elasticsearch:一个强大的Java搜索引擎
    一、介绍Elasticsearch是一个基于ApacheLucene库的开源搜索引擎,它提供了一个分布式、多租户能力的全文搜索引擎,同时具有HTTP网络界面和无模式JSON文档。Elasticsearch是用Java开发的,它是一个可扩展的系统,可以很容易地通过插件来扩展其功能。二、特点全文搜索引擎:Elasticsearch使用......
  • 从根上理解elasticsearch(lucene)查询原理(1)-lucece查询逻辑介绍
    大家好,我是蓝胖子,最近在做一些elasticsearch慢查询优化的事情,通常用分析elasticsearch慢查询的时候可以通过profileapi去分析,分析结果显示的底层lucene在搜索过程中使用到的函数调用。所以要想彻底弄懂elasticsearch慢查询的原因,还必须将lucene的查询原理搞懂,今天我们就先来介......
  • 如何给Fedora做本地化贡献
    闲来无事,想给开源做做贡献。本来打算搞代码,但是源码下载下来,光下载编译依赖就要半天,代码又多,懒得看,就先看看有没有什么简单的。翻译倒是简单,我英语还行,所以先做做本地化看看。我用的Linux系统是Fedora,因为它安装起来很方便,可以轻松和Win11双系统,所以我就在Fedora官网上面逛。发......
  • 一次elasticsearch 查询瞬间超时案例分析
    问题背景#在晚上9点左右,刚从外面逛街回到家,就接到了电话报警(幸好前不久刚好把电话报警机制加上,不然可能我就要去洗澡了......
  • ElasticSearch 字段类型
    (1)、字符串    text ⽤于全⽂索引,搜索时会自动使用分词器进⾏分词再匹配    keyword 不分词,搜索时需要匹配完整的值(2)、   整型: byte,short,integer,long   浮点型:float,half_float,scaled_float,double(3)日期类型    date(4)、范围型    i......