zoukankan      html  css  js  c++  java
  • 巨思维题

    题目链接:

      https://codeforces.com/contest/1082/problem/B

    题目意思:

      给定字符串长度,再输入该长度的字符串(只包含G和S),求交换一次两个字符位置后得到的G的最大连续长度。

    题目思路:

      统计连续的G数目,用cntg记录

      记录下G的总数目,用sumg记录

      记录下与该S紧紧相连的G数目,用cnts_g记录

      ans存答案。

    AC代码如下:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    #include<vector>
    #include<queue>
    #include<stack>
    #include<set>
    #define Max(a,b) ((a)>(b)?(a):(b))
    #define Min(a,b) ((a)<(b)?(a):(b))
    #define Swap(a,b,t) t=a,a=b,b=t
    #define Mem0(x) memset(x,0,sizeof(x))
    #define Mem1(x) memset(x,-1,sizeof(x))
    #define MemX(x) memset(x,0x3f,sizeof(x))
    using namespace std;
    typedef long long ll;
    const int inf=0x3f3f3f;
    const double eps=1e-12;
    int main()
    {
        int t;
        char x;
        cin>>t; 
        ll cntg=0,sumg=0,cnts_g=0,ans=0;
        while (t--){
            cin>>x;
            if (x=='G'){
                cntg++;sumg++;
            }
            else {
                cnts_g=cntg;
                cntg=0;
            }
            ans=max(ans,cntg+cnts_g+1);
        }
        ans=min(ans,sumg);
        printf("%lld
    ",ans);
        return 0;
    }
  • 相关阅读:
    洛谷⑨月月赛Round2 官方比赛 OI
    3243 区间翻转
    3279 奶牛健美操
    1959 拔河比赛
    2144 砝码称重 2
    BZOJ1999 树网的核[数据加强版]
    U4704 函数
    U4687 不无聊的序列
    U4699 鸡蛋
    UVA 11212 Editing a Book
  • 原文地址:https://www.cnblogs.com/q1204675546/p/10061074.html
Copyright © 2011-2022 走看看