当前位置: 首页 > news >正文

[USACO2023-JAN-Bronze] T3 Moo Operations 题解

一、题目描述

因为Bessie觉得玩平时经常玩的只包含'C' 'O'和'W'的字符串无聊了,Farmer John 给了她Q个新的字符串(1≤Q≤100),这Q个字符串只包含'M'和'O'。很明显,只包含M和O的单词里Bessie最喜欢的是”MOO”,所以她希望按照下面两个规则,将这Q个字符串转换成"MOO":

  1. 替换第一个或最后一个字符成为它相反的字符(O变成M,M变成O).

  1. 删除第一个或最后一个字符.

很不幸的是,Bessie比较懒,不想做很多不必要的操作。对于每个字符串,请帮她找到最少操作次数使字符串变成”MOO”,如果不可能办到,输出-1 。

输入

第一行包含一个整数Q。

接下来Q行每行一个字符串,字符串中只包含M或O,字符串最少包含1个字符,最多包含100个字符。

输出

输出Q行,对于每个字符串,输出对应的操作次数。

样例

输入

复制

3

MOMMOM

MMO

MOO

输出

复制

4

-1

0

说明

A sequence of 4 operations transforming the first string into "MOO" is as follows:

  • Replace the last character with O (operation 1)

  • Delete the first character (operation 2)

  • Delete the first character (operation 2)

  • Delete the first character (operation 2)

The second string cannot be transformed into "MOO." The third string is already "MOO," so no operations need to be performed.

• Inputs 2-4: Every string has length at most 3.

• Inputs 5-11: No additional constraints.

二、分析

  1. 只能从前或从后对字符串进行操作,那么结果必然是连续的字符串。

  1. 最终的字符串结果是3,那么需要删除n-3个字符串

  1. 中间是M,必然操作不到,所以中间必须是O

  1. 枚举中间是O的长度为3的字符串

三、代码

#include <bits/stdc++.h>
using namespace std;
const int N=1e6;
int main() {int t;scanf("%d",&t);while(t--){char s[202];scanf("%s",s);int len=strlen(s),ans=N;for(int i=1;i<len-1;i++){if(s[i]=='O'){int cur=len-3 + (s[i-1]=='M'?0:1)+(s[i+1]=='O'?0:1);ans=min(ans,cur);}}printf("%d\n",ans>=N?-1:ans);}return 0;
}

http://www.lryc.cn/news/10704.html

相关文章:

  • OKCC呼叫中心支持哪些接入方式?
  • 如何让手机共享电脑代理网络的WIFI热点
  • 渲染有问题?怎么办?6种方法让你渲染无忧
  • 中国人寿业务稳定性保障:“1+1+N” 落地生产全链路压测
  • 2/17考试总结
  • 零信任-360连接云介绍(9)
  • 使用dlib进行人脸检测和对齐
  • 将python代码封装成c版本的dll动态链接库
  • AI技术网关如何用于安全生产监测?有什么优势?
  • 2|数据挖掘|关联规则|Association Rules|Apriori算法|Frequent-pattern tree和FP-growth算法|11.11
  • 刷题记录:牛客NC53370 Forsaken的三维数点
  • lombok的原理 和 使用
  • UDP网络编程
  • “合并区间”问题解析及其思考
  • 2023年理想新能源汽车核心部件解密
  • C++ 将一个vector内容赋值给另一个vector,及swap与assign的区别
  • PMP的价值有哪些?
  • OnGUI label 控件||Unity 3D GUI教程||OnGUI Background Color 控件
  • 从 JavaScript 中的数组中删除空对象
  • 【C++】AVL树和红黑树(插入和测试详解)
  • Centos7 安装 Mysql 8.0.32,详细完整教程(好文章!!)
  • Apache Beanutils为什么被禁止使用?
  • sql server执行md5加密的时候,字符串前带N和不带N的结果是不一样的
  • 01Python编译器和编辑器下载
  • CHAPTER 5 自动发现、自动注册、分布式监控、SNMP监控
  • P5311 [Ynoi2011] 成都七中
  • Python 日期和时间格式
  • 电脑和手机的软件推荐
  • 酸回收树脂的应用
  • windows上配置IIS全过程