zoukankan      html  css  js  c++  java
  • CF1167E Range Deleting(双指针)

    本题如果删除l-r,那么l-r+1...这些也都是满足的,因此具有单调性。

    所以我们考虑枚举l,r,对于判断,维护四个数组

    分别为l[],当前数出现的最早时间

    r[],当前数出现的最晚时间

    ll[],1-i出现的最早时间

    rr[],i-n出现的最晚时间

    对于满足的状态要分三种情况讨论

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    const int N=1e6+10;
    const int mod=998244353;
    int ll[N],rr[N],l[N],r[N];
    int a[N];
    int main(){
        ios::sync_with_stdio(false);
        int i;
        int n,x;
        cin>>n>>x;
        memset(l,0x3f,sizeof l);
        memset(r,-1,sizeof r);
        memset(ll,0x3f,sizeof ll);
        memset(rr,-1,sizeof rr);
        for(i=1;i<=n;i++){
            cin>>a[i];
            l[a[i]]=min(l[a[i]],i);
            r[a[i]]=i;
        }
        for(i=1;i<=x;i++){
            rr[i]=max(r[i],rr[i-1]);
        }
        for(i=x;i>=1;i--){
            ll[i]=min(l[i],ll[i+1]);
        }
        int k=x;
        while(k>1&&ll[k]>=r[k-1])
            k--;
        LL ans=0;
        for(i=0;i<x;i++){
            if(i&&(l[i]<rr[i-1]))
                break;
            while(k<=i+1||ll[k]<rr[i])
                k++;
            ans+=x-k+2;
        }
        cout<<ans<<endl;
        return 0;
    }
    View Code
    没有人不辛苦,只有人不喊疼
  • 相关阅读:
    PC-CSS-默认字体样式
    PC--CSS维护
    PC--CSS技巧
    PC--CSS优化
    PC--CSS命名
    PC--CSS常识
    Base64与MIME和UTF-7
    Base64算法与多版本加密技术
    Base64算法与MD5加密原理
    log4j的使用
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/13398878.html
Copyright © 2011-2022 走看看