思路

  • 题意:求包含1,2,3的区间最小长度
  • 做法:我用了最笨的方法,记录下距离i点最近的1,2,3的位置,一个是在i左边最近的1,2,3位置,一个是在i右边最近的1,2,3的位置,之后枚举一下每一个位置,如果这个位置上是1,就看一下 i 位置左边最近的2和右边最近的3的差,左边最近的3和右边最近的1的差,其中取最小的哪一个,之后遇见s[i]=2或者3也同样处理,最后输出答案即可

代码

#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N=200050;
char s[N];
int posa1[N];int posb1[N];int posc1[N];
int posa2[N];int posb2[N];int posc2[N];
int main(){int T;cin >> T;while(T--){cin >> s+1;int len=strlen(s+1);posa1[0]=0;posa2[len+1]=0;posb1[0]=0;posb2[len+1]=0;posc1[0]=0;posc2[len+1]=0;for(int i=1;i<=len;i++){posa1[i]=posa1[i-1];posb1[i]=posb1[i-1];posc1[i]=posc1[i-1];if(s[i]=='1'){posa1[i]=i;}if(s[i]=='2'){posb1[i]=i;}if(s[i]=='3'){posc1[i]=i;}}for(int i=len;i>=1;i--){posa2[i]=posa2[i+1];posb2[i]=posb2[i+1];posc2[i]=posc2[i+1];if(s[i]=='1'){posa2[i]=i;}if(s[i]=='2'){posb2[i]=i;}if(s[i]=='3'){posc2[i]=i;}}if(posa1[len]==0||posb1[len]==0||posc1[len]==0){cout << 0 << "\n";continue;}int res=len;for(int i=1;i<=len;i++){if(s[i]=='1'){if(posb1[i]&&posc2[i]){res=min(res,posc2[i]-posb1[i]+1);}if(posb2[i]&&posc1[i]){res=min(res,posb2[i]-posc1[i]+1);}}if(s[i]=='2'){if(posa1[i]&&posc2[i]){res=min(res,posc2[i]-posa1[i]+1);}if(posa2[i]&&posc1[i]){res=min(res,posa2[i]-posc1[i]+1);}}if(s[i]=='3'){if(posb1[i]&&posa2[i]){res=min(res,posa2[i]-posb1[i]+1);}if(posb2[i]&&posa1[i]){res=min(res,posb2[i]-posa1[i]+1);}}}cout << res << "\n";}}

Ternary String相关推荐

  1. Minimum Ternary String CodeForces - 1009B(思维)

    You are given a ternary string (it is a string which consists only of characters '0', '1' and '2'). ...

  2. 牛客网暑期ACM多校训练营(第三场): A. Ternary String(欧拉降幂+递推)

    题目描述 A ternary string is a sequence of digits, where each digit is either 0, 1, or 2. Chiaki has a t ...

  3. B. Ternary String

    B. Ternary String B.三元字符串 time limit per test: 2 seconds time limit per test: 2 seconds memory limit ...

  4. CSL分苹果 小埋与扫雷 Doors Breaking and Repairing Key Set Balanced Ternary String

    第一题CSL分苹果 思路:基础动态规划,设m为所有苹果的数量和,dp[x]为,容量为x时候能分的最多苹果数目,那么wavator分到的最多苹果数目就是dp[m/2],tokitsukaze分到的苹果数 ...

  5. Balanced Ternary String

    https://codeforces.com/contest/1102/problem/D 题解: /* *@Author: STZG *@Language: C++ */ #include < ...

  6. Ternary Search Trees 三分树

    Efficient auto-complete with a ternary search tree 分类: 算法和数据结构学习 2012-04-18 18:03  125人阅读  评论(0)  收藏 ...

  7. Educational Codeforces Round 47 (Div 2) (A~G)

    目录 Codeforces 1009 A.Game Shopping B.Minimum Ternary String C.Annoying Present D.Relatively Prime Gr ...

  8. 字符串处理 —— 模拟与暴力

    [概述] 在某些题目中,需要对字符串进行处理,不需要很复杂的算法,只需要按照题意进行模拟或暴力枚举即可得出答案. [例题] 1.简单模拟 Minimum Ternary String(CF-1009B ...

  9. java 车站分级_做题中的错误总结 - osc_p4wgjz7p的个人空间 - OSCHINA - 中文开源技术交流社区...

    马上NOIP2018啦,突然发现自己比去年还菜,写水题时出现了很多错误,记录一下. 2018.7.8 luoguP2016 战略游戏 节点从0编号. 所以以i为根时不能设i的根为0,应设为-1 for ...

最新文章

  1. iOS OpenCV 图像灰度处理
  2. golang获取md5
  3. vc c语言图片处理,大佬们,小菜鸟想问一问用vc编译器做简易画图软件
  4. python列表切片得到的是列表还是字符串_python中列表的切片问题 python arry怎么取列切片...
  5. Fiddler抓包使用教程-模拟低速网络环境
  6. C语言链表返回第n个到最后的节点的算法(附完整源码)
  7. 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
  8. MapReduce作业提交到YARN上运行的步骤
  9. [修正] Firemonkey Windows 控件有虚线残影问题
  10. sql azure 语法_如何使用Azure门户,Cloud Shell和T-SQL复制Azure SQL数据库
  11. WPF在一个窗口中实现多个视图
  12. 23矩阵——LU分解、用LU 分解解线性方程组、LU分解的存在性和唯一性、对称矩阵的 L D L 分解、置换矩阵、PA=LU 分解
  13. matlab幂级数展开的收敛区间,常见函数的幂级数展开式收敛区间的快速确定法.pdf...
  14. AVI文件在opencore框架下的解析
  15. HTML中字体和字体图标的应用
  16. 2021-01-04
  17. stm32 外部中断不起作用
  18. Activity 启动流程
  19. coreldraw凹槽_CATIA课时:操作工具栏创建修剪分割曲面视频教程_翼狐网
  20. Java的IO流---File类的使用

热门文章

  1. 【docker】虚拟化和docker容器概念
  2. iOS端如何实现带UI截屏分享
  3. 微信公众号创建菜单报错40016
  4. 一文带你深入浅出C语言运算符、表达式和语句
  5. creo1复制粘贴指令
  6. 《工程伦理与学术道德》之《导论》
  7. SVG 矩形rect 学习
  8. 采用keras深度学习框架搭建卷积神经网络模型实现垃圾分类,基于树莓派上进行实时视频流的垃圾识别源代码
  9. 2010提升你幽默感的经典短句!
  10. springboot传图片到前端之有手就行