zoukankan      html  css  js  c++  java
  • ABC

    题面

    在一个只包含A、B、C的字符串,有一种操作,可使 “ABC” 变成 ”BCA“,求字符串s的最多操作数。

    1s200000

    思路:

    易得,该操作是将A与BC交换位置,可用 1、0分别代表“A”、“BC”。题意转化对一个只包含10的序列,将所有的10更新01,即将所有的0放在1前面。假设序列中共有k个0,

    每个0前面有a[i]个1,则

    对于单独B、C,则可看作是两个序列分隔的标志。

    代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4  
     5 char c[200010];
     6 int i,k,l;
     7 ll ans;
     8  
     9 int main() {
    10     scanf("%s", c);
    11     l = strlen(c);
    12     while (i < l) {
    13         if (c[i] == 'A') {
    14             k++;
    15             i++;
    16         } else if (c[i] == 'B' && c[i + 1] == 'C') {
    17             ans += k;
    18             i += 2;
    19         } else {
    20             k = 0;
    21             i++;
    22         }
    23     }
    24     printf("%lld
    ", ans);
    25     return 0;
    26 }
    View Code
  • 相关阅读:
    jenkins更换国内源
    部署jdk和maven
    Prometheus监控Nginx
    Prometheus监控MySQL
    MySql里动态视图的实现
    MySql里split函数的实现
    HTML编码规范
    消弱反驳18招
    Pr2020
    记忆准则
  • 原文地址:https://www.cnblogs.com/Accpted/p/11185701.html
Copyright © 2011-2022 走看看