本文共 833 字,大约阅读时间需要 2 分钟。
尺取法,要想好组织方式。
又被卡了cin。。
#include #include #include #include #include #include #include #include #include #define lson l, m, rt<<1#define rson m+1, r, rt<<1|1#define INF 0x3f3f3f3ftypedef unsigned long long ll;using namespace std;set st;map mp;int a[100010];int main(){ int n; scanf("%d", &n); for(int i = 0; i < n; i++){ scanf("%d", &a[i]); st.insert(a[i]); mp[a[i]] = 0; } int m = st.size(); int s=0, t=0, num=0, ans = INF; while(1){ while(t < n&&num < m){ //判断种类是否都涵盖 if(mp[a[t++]]++ == 0){ //如果是该类知识点的第一个 num++;//种类++ } } if(num < m) break; ans = min(ans, t-s); if(--mp[a[s++]] == 0){ //后判断a[s]的类的个数--后是否为0 num--;//种类-- } } printf("%d\n", ans); return 0;}
转载于:https://www.cnblogs.com/Surprisezang/p/9019287.html