hdu 5583

来源:互联网 发布:碳微球 知乎 编辑:程序博客网 时间:2024/06/14 09:46
#include <iostream>#include <string.h>#include <cstdio>using namespace std;long  k=0,pos[200000];long long calc(string s){    long long  pre,sum=0,c,i,len=0;    pre=s[0]-'0';    for (i=0;i<s.length();i++)    {        c=s[i]-'0';        if (c==pre) len++;        else        {            sum=sum+len*len;            k++;            pos[k]=len;            len=1;            pre=c;        }    }    sum=sum+len*len;    k++;    pos[k]=len;    return sum;}int main(){    long long   T,sum=0,temp,ans=0;    int Case=0;    string s;    cin>>T;    pos[0]=0;    while (T--)    {        cin>>s;        k=0;        ans=0;        memset(pos,0,sizeof(pos));        sum=calc(s);        for (int i=1;i<=k-1;i++)            {                if (pos[i]==1)                  {                      temp=(pos[i-1]+pos[i]+pos[i+1])*(pos[i-1]+pos[i]+pos[i+1])-pos[i-1]*pos[i-1]-pos[i]*pos[i]-pos[i+1]*pos[i+1];                      if (temp>ans) ans=temp;                  }                else                {                    temp=(pos[i]-1)*(pos[i]-1)+(pos[i+1]+1)*(pos[i+1]+1)-pos[i]*pos[i]-pos[i+1]*pos[i+1];                    if (temp>ans) ans=temp;                  temp=(pos[i]+1)*(pos[i]+1)+(pos[i+1]-1)*(pos[i+1]-1)-pos[i]*pos[i]-pos[i+1]*pos[i+1];                    if (temp>ans) ans=temp;                }            }                   Case=Case+1;                   printf("Case #%d: %lld\n",Case,ans+sum);    }    return 0;}
0 0
原创粉丝点击