社区讨论

求调90分,不玄关

P1638逛画展参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mm563wav
此快照首次捕获于
2026/02/28 01:30
2 周前
此快照最后确认于
2026/02/28 11:00
上周
查看原帖
复健发现橙题再做一遍都做不出来了, 超时了90分
CPP
#include<bits/stdc++.h>
#define int long long
#define N (int)(2e6+5)
using namespace std;
int a[N];
unordered_map<int,int> b;
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;++i){
        cin>>a[i];
    }
    int ansl=1,ansr=n,ct=1;
    int l=1;
    while(l<=n){
        ++l;
        b.clear();
        b[a[l]]++;
        ct=1;
        int r=l;
        while(ct!=m&&l<=n&&r<n){
            ++r;
            if(b[a[r]]==0)++ct;
            ++b[a[r]];
        }
        if(ct==m){
            while(b[a[l]]-1!=0){
                b[a[l]]--;
                ++l;
            }
            if(r-l<ansr-ansl){
                ansl=l;
                ansr=r;
            }
        }
        
    }
    cout<<ansl<<' '<<ansr;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...