zoukankan      html  css  js  c++  java
  • 【HDU】3474 Necklace

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 #define MAXN 2000010
     5 char s[MAXN];
     6 int n,len,q[MAXN],sum[MAXN];
     7 bool ok[2][MAXN];
     8 void Read()
     9 {
    10     int i;
    11     scanf(" %s",s+1);
    12     len=strlen(s+1);
    13     for(i=1;i<=len;i++)
    14         s[i+len]=s[i];
    15     n=len<<1;
    16 }
    17 void DoIt(int k)
    18 {
    19     int i,front,rear;
    20     sum[0]=0;
    21     for(i=1;i<=n;i++)
    22     {
    23         if(s[i]=='C')
    24             sum[i]=sum[i-1]+1;
    25         else
    26             sum[i]=sum[i-1]-1;
    27     }
    28     front=0;
    29     rear=-1;
    30     for(i=1;i<len;i++)
    31     {
    32         for(;front<=rear&&sum[q[rear]]>=sum[i];rear--);
    33         q[++rear]=i;
    34     }
    35     for(;i<=n;i++)
    36     {
    37         for(;front<=rear&&i-q[front]>=len;front++);
    38         for(;front<=rear&&sum[q[rear]]>=sum[i];rear--);
    39         q[++rear]=i;
    40         ok[k][i-len]=(sum[q[front]]>=sum[i-len]);
    41     }
    42 }
    43 int main()
    44 {
    45     int c,i,cnt,ca=1;
    46     scanf("%d",&c);
    47     while(c--)
    48     {
    49         Read();
    50         DoIt(0);
    51         reverse(s+1,s+1+n);
    52         DoIt(1);
    53         for(i=cnt=0;i<len;i++)
    54         {
    55             if(ok[0][i]||ok[1][len-i])
    56                 cnt++;
    57         }
    58         printf("Case %d: %d\n",ca++,cnt);
    59     }
    60     return 0;
    61 }
  • 相关阅读:
    六、springboot集成Swagger2
    五、springboot单元测试
    四、Springboot Debug调试
    三、springboot热部署
    二、springboot配置
    一、springboot入门
    SpringBoot整合RabbitMQ
    消息总线
    分布式配置
    路由网关---zuul
  • 原文地址:https://www.cnblogs.com/DrunBee/p/2598848.html
Copyright © 2011-2022 走看看