Ternary String
思路
- 题意:求包含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相关推荐
- Minimum Ternary String CodeForces - 1009B(思维)
You are given a ternary string (it is a string which consists only of characters '0', '1' and '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 ...
- B. Ternary String
B. Ternary String B.三元字符串 time limit per test: 2 seconds time limit per test: 2 seconds memory limit ...
- CSL分苹果 小埋与扫雷 Doors Breaking and Repairing Key Set Balanced Ternary String
第一题CSL分苹果 思路:基础动态规划,设m为所有苹果的数量和,dp[x]为,容量为x时候能分的最多苹果数目,那么wavator分到的最多苹果数目就是dp[m/2],tokitsukaze分到的苹果数 ...
- Balanced Ternary String
https://codeforces.com/contest/1102/problem/D 题解: /* *@Author: STZG *@Language: C++ */ #include < ...
- Ternary Search Trees 三分树
Efficient auto-complete with a ternary search tree 分类: 算法和数据结构学习 2012-04-18 18:03 125人阅读 评论(0) 收藏 ...
- Educational Codeforces Round 47 (Div 2) (A~G)
目录 Codeforces 1009 A.Game Shopping B.Minimum Ternary String C.Annoying Present D.Relatively Prime Gr ...
- 字符串处理 —— 模拟与暴力
[概述] 在某些题目中,需要对字符串进行处理,不需要很复杂的算法,只需要按照题意进行模拟或暴力枚举即可得出答案. [例题] 1.简单模拟 Minimum Ternary String(CF-1009B ...
- java 车站分级_做题中的错误总结 - osc_p4wgjz7p的个人空间 - OSCHINA - 中文开源技术交流社区...
马上NOIP2018啦,突然发现自己比去年还菜,写水题时出现了很多错误,记录一下. 2018.7.8 luoguP2016 战略游戏 节点从0编号. 所以以i为根时不能设i的根为0,应设为-1 for ...
最新文章
- iOS OpenCV 图像灰度处理
- golang获取md5
- vc c语言图片处理,大佬们,小菜鸟想问一问用vc编译器做简易画图软件
- python列表切片得到的是列表还是字符串_python中列表的切片问题 python arry怎么取列切片...
- Fiddler抓包使用教程-模拟低速网络环境
- C语言链表返回第n个到最后的节点的算法(附完整源码)
- 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
- MapReduce作业提交到YARN上运行的步骤
- [修正] Firemonkey Windows 控件有虚线残影问题
- sql azure 语法_如何使用Azure门户,Cloud Shell和T-SQL复制Azure SQL数据库
- WPF在一个窗口中实现多个视图
- 23矩阵——LU分解、用LU 分解解线性方程组、LU分解的存在性和唯一性、对称矩阵的 L D L 分解、置换矩阵、PA=LU 分解
- matlab幂级数展开的收敛区间,常见函数的幂级数展开式收敛区间的快速确定法.pdf...
- AVI文件在opencore框架下的解析
- HTML中字体和字体图标的应用
- 2021-01-04
- stm32 外部中断不起作用
- Activity 启动流程
- coreldraw凹槽_CATIA课时:操作工具栏创建修剪分割曲面视频教程_翼狐网
- Java的IO流---File类的使用