首页 > 其他分享 >开学补题(cf版)(第四周)

开学补题(cf版)(第四周)

时间:2023-09-25 14:45:52浏览次数:37  
标签:const int cf long 补题 开学 include define

Problem - G - Codeforces

 

题意:给你一个字符串,里面只包含A或者B两个字符

然后给你两种操作,一种是把AB变成BC,另外一种是把BA变成CB

然后问你给定的字符串最多可以变多少次

 

题解:我们可以发现无论你怎么搞,都要消耗一个a,所以看看B的附近有多少个A就有几次

但是假如B不够多就不可以把A全部消耗掉

比如    AAABAAAA  这里我们可以发现我们只能搞4个要去掉前面最小的那一个

因为B的区间只有1   看成一个块A块有2,B只有1,所以不行必须去掉一个最小的

如果B块大于或者等于A块那答案就是A的总和了

所以统计块数,然后要么去掉最小块数A的数量,要么就是全部

#include <bits/stdc++.h>
//#pragma  GCC optimize("Ofast")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
//#define double long double
#define int long long
//#define endl '\n';
using namespace std;
const int N=16005,M=1e1;
const int INF = 0x3f3f3f3f;
const int mod=100003;
typedef pair<int,int> PII;


void solve()
{
    string s;
    cin>>s;
   int ans=0;
   int cnt=0,sum=0;
   int res=0;
   vector<int> a;
    for(int i=0;i<s.size();i++) {
        if(s[i]=='A')
        {
            cnt++;
        }
        else
        {
            if(s[i-1]=='A' || s[i+1]=='A')
            {
                res++;
            }
            if(cnt)
            {
                a.push_back(cnt);
                sum+=cnt;
            }
            cnt=0;
        }
    }
    if(cnt) sum+=cnt,a.push_back(cnt);
    sort(a.begin(),a.end());
    if(res>=a.size())
    {
        cout<<sum<<endl;
    }
    else
    {
        cout<<sum-a[0]<<endl;
    }

}


signed main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int T=1;
    cin>>T;
    while(T--){
        solve();
    }
    return 0;
}

 

标签:const,int,cf,long,补题,开学,include,define
From: https://www.cnblogs.com/whatdo/p/17727915.html

相关文章

  • VCF文件的常见FILTER汇总
    Thisfieldcontainsthename(s)ofanyfilter(s)thatthevariantfailstopass,orthevalue PASS ifthevariantpassedallfilters.IftheFILTERvalueis .,thennofilteringhasbeenappliedtotherecords.Itisextremelyimportanttoapplyappropria......
  • CF_EduRound155小丑寄
    一句话总结:A题理解错了,数据又水,所以寄了。过程:22:35开题。22:40怎么还没加载出来??急急急22:42哦,严格大于,但是主宾对调了,乐乐乐乐乐乐乐,cout<<ans;\(\rightarrow\)cout<<ans-1;22:45一发过。。。22:45-23:38啥事没有。23:38开E题23:50左右好像有点思路......
  • [CF1810G] The Maximum Prefix
    题目描述You'regoingtogenerateanarray$a$withalengthofatmost$n$,whereeach$a_{i}$equalseither$1$or$-1$.Yougeneratethisarrayinthefollowingway.First,youchoosesomeinteger$k$($1\lek\len$),whichdecid......
  • [CF704D] Captain America
    题目描述SteveRogersisfascinatedwithnewvibraniumshieldsS.H.I.E.L.Dgavehim.They'realluncolored.Thereare$n$shieldsintotal,the$i$-thshieldislocatedatpoint$(x_{i},y_{i})$ofthecoordinateplane.It'spossiblethattwo......
  • CF249E Endless Matrix 题解
    @目录Description前置芝士SolutionCodeDescription构造一类矩形:先构造矩形\(M_1=\begin{bmatrix}1\end{bmatrix}\)。对于\(i\geq1\),\(T_{i+1}\)从\(T_i\)构造而来,方法为在最右侧和最下侧插入新的一行一列,自右上到左下\(2i+1\)个数分别填入\(i^2+1,i^2+2\dots(i+1)^2\)......
  • CF1801D The way home
    原题翻译非常好的一个题,有两种做法方法1:flody+dp首先我们确定一个最优行走方案:从\(1\)号节点赚到足够钱后通过最短路到达\(x_1\),在\(x_1\)赚够足够钱后到达\(x_2\),在\(x_2\)赚够足够钱后到达\(x_3\),如此往复后到达终点现在我们有一个问题:从\(u\)到\(v\)的路......
  • CF1106D Lunar New Year and a Wander 题解
    CF1106D题解暑期学校军训第一天模拟赛的题,相对而言比较简单题意:题意其实很简单,就是有一个无向图,需要你从\(1\)号节点出发,然后一次遍历所有的点,输出其中字典序最小的遍历思路说说思路吧,这题既然要遍历图上所有点,那首先就会想到\(\texttt{BFS}\)或\(\texttt{DFS}\),可本题还......
  • CF1710D Recover the Tree
    题目链接一个比较显然的思路就是:我们按照右端点从小到大的顺序(右端点相同按左端点从大到小)去考虑每个好的区间。由于是连通性问题,不难想到用并查集去实时维护连通性。根据定义,一个好的区间必定对应了一个连通块;我们考虑的是好的区间,所以当前并查集中的每个连通块必定都是一个区......
  • CF1862G The Great Equalizer
    题目链接先不考虑修改操作。直接模拟题目意思,可以发现最后留下的一定是最小的数字(因为相同的数每次会保留第一个)。我当时是顺着这个思路做的题目,现在想想反过来想好像会让问题变得更简单,即认为每次保留最后一个相同的数字。那么现在每次留下的就是最后一个数字,显然每次操作会让......
  • CF1857G Counting Graphs
    题目链接考虑每条非树边的取值,显然不能小于等于该边与树边形成的环中的最大值(当然这条非树边也可以不存在),所以每条非树边的取值范围就是\(S-max(w)+1\)(\(+1\)的原因是该边可能不存在)。暴力枚举肯定会超时,考虑优化。发现\(kruskal\)算法获得最小生成树的过程中,按从小到......