首页 > 其他分享 >[Codeforces] CF1793C Dora and Search

[Codeforces] CF1793C Dora and Search

时间:2023-12-10 19:44:06浏览次数:31  
标签:Search minn int 最大值 Codeforces Maxn 最小值 maxn Dora

CF1793C Dora and Search

题意

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

思路

很明显的双指针,虽然我最开始的思路是二分

预处理当前序列的最大值和最小值,并且一旦两段的\(l,r\)中有一个是最大或最小值,那么就移动,并且更新

那该怎么更新呢?最大值如果访问过了,那么新的最大值就是当前的减一

反之,最小值就是当前的加一

还有一点需要注意,就是\(l-r+1\) (即区间长度)一定大于\(2\),否则就无法构造了

代码

#include<bits/stdc++.h>
using namespace std;
const int Maxn=2e5+10;
int a[Maxn],f[Maxn];
int n,l,r;
int maxn,minn;
void run()
{
    cin>>n;l=1,r=n;maxn=-1,minn=1e9+10;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        maxn=max(maxn,a[i]);
        minn=min(minn,a[i]);
    }
    while(l+2<=r)
    {
        int flag=1;
        if(a[l]==maxn) maxn=a[l]-1,l++,flag=0;
        else if(a[r]==maxn) maxn=a[r]-1,r--,flag=0;
        if(a[l]==minn) minn=a[l]+1,l++,flag=0;
        else if(a[r]==minn) minn=a[r]+1,r--,flag=0;
        if(flag) break;
    }
    if(l+2<=r) cout<<l<<" "<<r<<endl;
    else cout<<-1<<endl;
}
int main()
{
    int t;
    cin>>t;
    while(t--) run();
}

标签:Search,minn,int,最大值,Codeforces,Maxn,最小值,maxn,Dora
From: https://www.cnblogs.com/lyk2010/p/17893117.html

相关文章

  • [Codeforces] CF1790D Matryoshkas
    CF1790DMatryoshkas题意ZYH的玩具有很多种类,每种玩具都是一段连续的区间(如\([3,4,5]\))ZYH有很多种玩具,但是他不慎把所有玩具的元素乱序混合到了一起。例如玩具\([1,2,3,4]\)和玩具\([2,3]\)混合到一起后可能是\([2,2,3,4,3,1]\)。给定混合后的序列\(a\),SA想知道Z......
  • Codeforces Round 803 (Div. 2)
    基本情况A题秒了。B题经典+2。(经典不开longlong)C题读错题,没得思路。B.RisingSandProblem-B-Codeforces思路好想,分类讨论找规律就行。这里还是要强调一下认真分析数据:InputThesecondlineofeachtestcasecontains\(n\)integers\(a_1,a_2,\ldots,a_n\)......
  • 11.Demonstrate the essentials concerning "Abstract" in research papers,such as f
    11.Demonstratetheessentialsconcerning"Abstract"inresearchpapers,suchasfeatures,types,andcomponents.演示研究论文中关于“摘要”的要点,如特点、类型和组成部分。Round1:IntroductiontotheAbstractSpeaker1(ResearcherA):Ladiesandgentlemen,than......
  • Codeforces Round 914 (Div. 2)
    基本情况脑子最卡的一集。A题读假题,卡了快一小时。B题代码太复杂,出错不好修改,一直调。虽然最后都出来了,但是没有剩下任何时间看后面题目了。A.Forked!Problem-A-Codeforces一开始不知道犯得什么病,觉得可以斜着走一格算作一步,然后情况就太多了,非常不好处理。后面突......
  • Codeforces Round 914 (Div. 2)
    C.ArrayGame题意:给定一个n的数组以及k的操作数,每次可以选择下表为i,j(i<j)得到一个abs(a[i]-a[j])的数放在数组末尾,问你k次操作后,数组中最小的数是多少?思路:首先k>=3选相同的下表两次,一定结果是0,是最小。k==1遍历出下表两两相减的绝对值最小以及本身数组中最小的即可k==2要将数......
  • CodeForces 1902F Trees and XOR Queries Again
    洛谷传送门CF传送门如果我们能把\(x\toy\)路径上的所有点权插入到线性基,那么可以\(O(\logV)\)查询。但是因为线性基合并只能\(O(\log^2V)\)(把一个线性基的所有元素插入到另一个),所以只能倍增做\(O((n+q)\logn\log^2V)\),过不了。考虑\(O(n\logV)\)预处理出......
  • Codeforces Round 904 (Div. 2)
    [CodeforcesRound904(Div.2)](https://codeforces.com/contest/1894)A.SimpleDesign暴力就行了1e9跑不满的#include<bits/stdc++.h>#defineintlonglong#defineendl'\n'usingnamespacestd;voidsolve(){intx,k;cin>>x>>......
  • Codeforces Round 801 (Div. 2)
    基本情况A就开始犯病,导致+2.B、C都过样例了,但是都错。B.CircleGame赛时推出来奇数必输,也知道偶数不是必赢,但是思路不清楚。这里我没意识到一个很关键的性质。奇数堆拿的石堆会变,这也导致了必输,比如三个堆\(1,2,3\)。表粗的为JOE。123123显然JOE拿的石堆是变化的......
  • [Codeforces] CF1763B Incinerate
    CF1763BIncinerate题意为了消灭人类,怪物协会向地球表面派出了\(n\)只怪兽。第\(i\)只怪物有一个生命值\(h_i\)和一个攻击力\(p_i\).凭借他最后的一击,真螺旋焚烧炮,Genos可以对所有活着的怪物造成\(k\)点伤害。换句话说,Genos可以通过一次攻击降低所有怪物\(k\)点......
  • Codeforces Round 909 (Div. 3)
    https://codeforces.com/contest/1899  一个小游戏#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>usingnamespacestd;intn;intmain(){cin>>n;while(n--){intx;......