zoukankan      html  css  js  c++  java
  • Codeforces 909 D. Colorful Points (模拟)

    题目链接: Colorful Points

    题意:

      给出一段字符串(长度最大为1e6),每次操作可以删除字符串中所有相邻字符与其不同的字符。例如:aabcaa 删除一次就变成了aa,就无法再删除了。题目要求所给出的字符串要操作几次后才无法操作。

    题解:

      可以把整个字符串化简为相邻字符都不同的串,把每个位置字符的个数记录下来,比如aaaabbbbccccdddd -> [4*a][4*b][4*c][4*d]。然后暴力求。@。@这题比我想象中的也暴力太多了,妈耶,刷新了我对D题的认知。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int MAX_N = 1e6+9;
     4 const int MOD = 1e9+7;
     5 char vec[MAX_N];
     6 int res[MAX_N];
     7 char tran[MAX_N];
     8 int main()
     9 {
    10     int N,M,T;
    11     while(~scanf("%s",vec))
    12     {
    13         memset(res,0,sizeof(res));
    14         int len = strlen(vec);
    15         int pos = 0;
    16         res[0] = 1;
    17         char pre = vec[0];
    18         tran[pos] = pre;
    19         for(int i=1;i<len;i++)
    20         {
    21             if(vec[i] == pre) res[pos] ++;
    22             else
    23             {
    24                 res[++pos] = 1;
    25                 pre = vec[i];
    26                 tran[pos] = pre;
    27             }
    28         }
    29 
    30         int num = pos + 1;
    31         int ans = 0;
    32         while(num > 1)
    33         {
    34             res[0] -= 1;
    35             res[num-1] -= 1;
    36             for(int i=1;i<num-1;i++)
    37             {
    38                 res[i] -= 2;
    39             }
    40             int t = 0;
    41             for(int i=0;i<num;i++)
    42             {
    43                 if(res[i]>0)
    44                 {
    45                     if(t>0 && tran[t-1] == tran[i])
    46                     {
    47                         res[t-1] += res[i];
    48                     }
    49                     else
    50                     {
    51                         res[t] = res[i];
    52                         tran[t++] = tran[i];
    53                     }
    54                 }
    55             }
    56             num = t;
    57             ans ++;
    58         }
    59         cout<<ans<<endl;
    60     }
    61     return 0;
    62 }
  • 相关阅读:
    关于MySQL5.6配置文件my-default.ini不生效问题
    jQuery学习总结(三)
    jQuery学习总结(二)
    jQuery学习总结(一)
    mysql输出到页面MVC模式
    简单的在jsp页面操作mysql
    mysql5.7的基本使用
    mysq5.7l的下载与配置
    jdk环境变量的配置
    SQL SERVER——给已有数据的表增加唯一值
  • 原文地址:https://www.cnblogs.com/doggod/p/8391551.html
Copyright © 2011-2022 走看看