1167E - Range Deleting 双指针

题意:给出n个数的序列,并给出x,这n个数的范围为[1,x],f(L,R)表示删除序列中取值为[l,r]的数,问有几对L,R使得操作后的序列为非递减序列
思路:若[l,r]成立,那么[l,r+1],.....,[l,x]都成立,且若[l,r]成立,那么[l+1,r]不成立,不存在[l+1,r-1]成立, 所以可以看出本题区间具有单调性,可以用双指针求解
说明:表示i值的最右边坐标,表示i值的最左边坐标
若f(l,r)成立要满足三个条件
1.
2.
3.
这里可以用类似前缀和的思想把这几个条件预处理处理,然后直接套用双指针即可
Reference:
https://www.cnblogs.com/henry-1202/p/10888691.html (大佬博客)
https://baijiahao.baidu.com/s?id=1615129382322508344&wfr=spider&for=pc (洛谷双指针总结)
https://www.cnblogs.com/xyq0220/p/10875872.html

#include
#define F first
#define S second
#define pii pair
#define pb push_back
#define mkp make_pair
#define all(zzz) (zzz).being(),(zzz).end()
#define pii pair
typedef long long ll;
typedef long long LL;
using namespace std;
const int maxn=1e6+7;
int s[maxn],t[maxn],ss[maxn],tt[maxn],a[maxn],precan[maxn],lastcan[maxn];
bool check(int l,int r){
    return precan[l-1]&&lastcan[r+1]&&ss[r+1]>tt[l-1];
}
int main(){
    int n,x;
    scanf("%d%d",&n,&x);
    memset(s,0x3f3f3f3f,sizeof(s));
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    for(int i=1;i<=n;i++){
        s[a[i]]=min(s[a[i]],i);
        t[a[i]]=max(t[a[i]],i);
    }

    long long  ans=0;
    for(int i=1;i<=x;i++){
        tt[i]=max(tt[i-1],t[i]);
    }
    ss[x+1]=0x3f3f3f3f;
    for(int i=x;i>=1;i--){
        ss[i]=min(ss[i+1],s[i]);
    }
    precan[0]=1;
    lastcan[x+1]=1;
    for(int i=1;i<=x;i++)precan[i]=precan[i-1]&&(tt[i-1]<s[i]);
    for(int i=x;i>=1;i--)lastcan[i]=lastcan[i+1]&&(ss[i+1]>t[i]);
    int r=1;
    for(int l=1;l<=x;l++){
        if(l>r)r++;
        while(r<x&&!check(l,r))r++;
        if(check(l,r))ans+=x-r+1;
    }
    cout<<ans<<endl;
    return 0;
}
全部评论

相关推荐

刚刷到字节跳动官方发的消息,确实被这波阵仗吓了一跳。在大家还在纠结今年行情是不是又“寒冬”的时候,字节直接甩出了史上规模最大的转正实习计划——ByteIntern。咱们直接看几个最硬的数,别被花里胡哨的宣传词绕晕了。首先是“量大”。全球招7000多人是什么概念?这几乎是把很多中型互联网公司的总人数都给招进来了。最关键的是,这次的资源分配非常精准:研发岗给了4800多个Offer,占比直接超过六成。说白了,字节今年还是要死磕技术,尤其是产品和AI领域,这对于咱们写代码的同学来说,绝对是今年最厚的一块肥肉。其次是大家最关心的“转正率”。官方直接白纸黑字写了:整体转正率超过50%。这意味着只要你进去了,不划水、正常干,每两个人里就有一个能直接拿校招Offer。对于2027届(2026年9月到2027年8月毕业)的同学来说,这不仅是实习,这简直就是通往大厂的快捷通道。不过,我也得泼盆冷水。坑位多,不代表门槛低。字节的实习面试出了名的爱考算法和工程实操,尤其是今年重点倾斜AI方向,如果你简历里有和AI相关的项目,优势还是有的。而且,转正率50%也意味着剩下那50%的人是陪跑的,进去之后的考核压力肯定不小。一句话总结:&nbsp;27届的兄弟们,别犹豫了。今年字节这是铁了心要抢提前批的人才,现在投递就是占坑。与其等到明年秋招去千军万马挤独木桥,不如现在进去先占个工位,把转正名额攥在手里。
喵_coding:别逗了 50%转正率 仔细想想 就是转正与不转正
字节7000实习来了,你...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务