首页 > 其他分享 >[AGC036E] ABC String

[AGC036E] ABC String

时间:2024-08-10 11:17:02浏览次数:13  
标签:字符 ABC String 删除 BC AGC036E leq 2c 字符串

又是一个逐步简化的模型,好烦了又不会做这种题了呜啊呜啊。


首先相邻且相同的字符,我们可以缩在一起。

不妨假设 \(c_a\leq c_b\leq c_c\),我们考虑逐步删除来达到三个字符相同的情况。

按照 \(A\) 将整个字符串划分成若干段,每一段一定形如 \(BC\) 交错的情形。

注意到中间字符串长度大于等于 \(3\) 时删除 \(BC\) 原串仍然满足相邻字符不相同这个性质,猜测 \(c_b=c_c\) 时可以取到上界。

证明:若一直删除 \(BC\),最后两个 \(A\) 之间至多两个字符,两边至多一个字符,那么 \(c_b+c_c\leq 2(c_a-1)+2=2c_a\),而一开始 \(c_b+c_c\geq 2c_a\),那么删除过程中一定会满足 \(c_b+c_c=2c_a\)。


那么我们现在的目标就是保证 \(c_a\) 尽量大的情况下使得 \(c_b=c_c\),首先如果说可以单独删除一个 \(C\) 一定会删除的,当两个 \(A\) 之间的字符串长度大于等于 \(2\) 的时候就可以将两边的 \(C\) 字符删掉。

如果还是不行的话,那么单个 \(C\) 的段一定比 \(B\) 的段多,我们一直删除 \(AC/CA\) 即可。

标签:字符,ABC,String,删除,BC,AGC036E,leq,2c,字符串
From: https://www.cnblogs.com/xcyyyyyy/p/18352090

相关文章

  • ABC 365
    赛时通过:A、B、C。赛后补题:D、E。A依题判断即可。#include<bits/stdc++.h>usingnamespacestd;inty;intmain(){ cin>>y; if(y%4!=0)cout<<365; if(y%4==0&&y%100!=0)cout<<366; if(y%100==0&&y%400!=0)cout<<365; if(y%400==0)......
  • AT_abc208_d 题解
    题目传送门做完这道题后感觉对Floyd的理解更深了。根据题面要求,设\(f(k,i,j)\)表示从\(i\)到\(j\)的所有只经过\(1\simk\)的点的所有路径的最短距离。很明显\(k\)那一维是阶段,因为它描述了从\(i\)到\(j\)路径中的不同点,而我们就是根据这一条件来划分集合,这......
  • Scanner类、String类和StringBuffer类的相关使用
     一、Scanner:主要用于键盘录入的  构造方法:    Scanner(InputStreamsource)构造一个新的Scanner,产生从指定输入流扫描的值。 1、next()和nextLine()区别: Stringline=sc.next();//不会接收特殊字符,比如空格回车这样的符号 Stringline=sc.nex......
  • 【题解】ABC365(A~E)
    前四题30min切,然后T5死磕70min+几发小唐错,距离比赛结束还有16s交最后一发,AC了。目录A.LeapYear题目描述思路代码B.SecondBest题目描述思路代码C.TransportationExpenses题目描述思路代码D.AtCoderJanken3题目描述思路代码E.XorSigmaProblem题目描述思路代码A.Lea......
  • LeetCode | 541 Reverse String II
    分析以2k作为游标步长,反转游标前半部分的字符串,后半部分保留;尾部部分余留长度,如果在[k,2k)直接处理情况跟前述一样,如果不是则直接返回。在这道题里面,还是回到数组部分提到的循环不变量法则,在2k长度这个游标移动过程中,处理完全一致:2k步长移动,只处理[2i,2i+k]部分,即便是尾部也是如......
  • LeetCode | 344 Reverse String
    分析字符数组本质上还是数组,双指针本质上是遍历,遍历过程只处理两个独立数据,移动过程将问题分为已经解决和未解决的两部分。在这个题目中值得注意的是,关于字符数组进行数据原地交换采用的是异或^的方式主类packagecom.github.dolphinmind.string;/***@authordolphinmind......
  • iOS开发基础149-由UUIDString引发的思考
    问题1:[[UIDevicecurrentDevice]identifierForVendor].UUIDString什么情况下值会变化?[[UIDevicecurrentDevice]identifierForVendor].UUIDString是一个用于标识设备的唯一标识符(UUID),针对同一应用程序供应商(即同一开发者的应用程序集合),在设备上不变。然而,有一些情况会导致这个......
  • ABC349D题解
    [ABC349D]DivideInterval题解传送门:luogu|atcoder题目简述给定非负整数\(l\)和\(r\)(\(l<r\)),令\(S(l,r)\)表示序列\((l,l+1,\ldots,r-2,r-1)\),其中包含从\(l\)到\(r-1\)的所有整数。此外,一个序列被称为“好序列”,当且仅当它可以表示为\(S(2^ij,2^{i}(j+1))\),......
  • JavaScript toLocaleString() 方法
    定义和用法:toLocaleString()方法可根据本地时间把Date对象转换为字符串,并返回结果。语法:dateObject.toLocaleString()返回值dateObject的字符串表示,以本地时间区表示,并根据本地规则格式化。问题//Javascript中newDate().toLocaleString()在不同浏览器中的结果不一致的解决......
  • ABC349D题解
    [ABC349D]DivideInterval题解传送门:luogu|atcoder题目简述给定非负整数$l$和$r$($l<r$),令$S(l,r)$表示序列$(l,l+1,\ldots,r-2,r-1)$,其中包含从$l$到$r-1$的所有整数。此外,一个序列被称为“好序列”,当且仅当它可以表示为$S(2^ij,2^{i}(j+1))$,其中$i$和$j$......