牛客周赛45

D

using namespace std;
typedef long long ll;
const int N=100010;
ll color[N],laco[N];//laco最后一个颜色的位置
ll n,k,ans=0;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);//提高输出效率
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>color[i];
    }
    for(ll l=1,r=0;l<=n;l++){
        while(r<n&&(!laco[color[r+1]]||r+1-laco[color[r+1]]<=k))
            {
            r++;
            laco[color[r]]=r;//laco代表最后一个color[r]所在的位置
    }
        if(laco[color[l]]==l) laco[color[l]]=0;//判断将要出来的数字是否是队列的最后一个
        ans+=r-l+1;//找到最大的一个对列,里面的小队列全是符合条件的
    }
    cout<<ans<<endl;
    return 0;
}
全部评论

相关推荐

2025-12-17 12:08
门头沟学院 产品经理
牛客85811352...:1希音不知道算不算大厂 2完全符合,过得很舒服, 3确实只有杂活 领导找我续签到明年3、4月我要继续吗。主要是边实习边秋招这段时间还是有点累
什么是优秀的实习经历
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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