• BZOJ 2213: [Poi2011]Difference 细节题


    大体上的思路不算太难,但是细节巨多无比.               

    注意我们必须要选一个,所以在记录极差的同时还要记录一下上一次出现的位置. 

    code: 

    #include <cstdio> 
    #include <algorithm>  
    #define setIO(s) freopen(s".in","r",stdin) 
    using namespace std; 
    const int N=1e6+7,M=27;      
    int n,ans; 
    int last[M],num[N],p[M][M],minv[M][M];     
    char str[N];
    int main() 
    { 
        // setIO("input"); 
        int i,j;   
        scanf("%d%s",&n,str+1);    
        for(i=1;i<=n;++i) 
        {
            int c=str[i]-'a';    
            ++num[c],last[c]=i;    
            for(j=0;j<26;++j) 
            {
                if(j!=c&&num[j]) 
                {
                    ans=max(ans,max(num[c]-num[j]-minv[c][j]-(last[j]==p[c][j]),num[j]-num[c]-minv[j][c]-(last[c]==p[j][c])));   
                }
            }    
            for(j=0;j<26;++j) 
            {
                if(num[j]-num[c]<minv[j][c]) 
                {
                    minv[j][c]=num[j]-num[c];   
                    p[j][c]=i;  
                }
            }
        }  
        printf("%d
    ",ans); 
        return 0; 
    }
    

      

  • 相关阅读:
    20191017-1 每周例行报告
    20191010-2 每周例行报告
    20190919-1 每周例行报告
    彭思雨20190919-3效能分析
    zipfile
    subprocess
    configparser
    hashlib
    json & pickle
    headpq
  • 原文地址:https://www.cnblogs.com/guangheli/p/12098914.html
Copyright © 2020-2023  润新知