codeforces 364 div2.c 神代码

来源:互联网 发布:视频加特效软件 编辑:程序博客网 时间:2024/05/08 03:39
标准的尺取 但是看到了一个写的非常好的代码 枚举的右边的边界 维护最左边一个的map数量是1 找最小答案就行了 学习了   真是语言之美
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <string>#include <iostream>#include <sstream>#include <ostream>#include <algorithm>#include <ctype.h>#include <cmath>#include <queue>#include <set>#include <stack>#include <map>#include <vector>#define inf 1e9+7#define pi acos(-1)#define natrule exp(1)using namespace std;#pragma comment(linker, "/STACK:1024000000,1024000000")int n,tot,cnt,ans=inf,temp[70],f[70];int main(){    cin>>n;    string s;    cin>>s;    for(int i=0;i<n;i++) if(!temp[s[i]-'A']) temp[s[i]-'A']++,tot++;    for(int i=0,j=0;i<n;i++)    {        if(!f[s[i]-'A']) cnt++;        f[s[i]-'A']++;        while(f[s[j]-'A']>1) f[s[j]-'A']--,j++;        if(cnt==tot) ans=min(i-j+1,ans);    }    cout<<ans;    return 0;}

1 0
原创粉丝点击