1 条题解

  • 0
    @ 2025-8-24 22:44:34

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar LegendaryGrandmaster
    来也匆匆,去也冲冲

    搬运于2025-08-24 22:44:34,当前版本为作者最后更新于2023-02-04 17:23:48,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    铜组全部题解

    首先字符串至少要有 3 位,没有直接输出 -1。

    我们三位三位模拟取最小值,只要中间是 O,都可以变成 MOO

    操作次数如下:

    1. MOO:0 次。
    2. MOM:1 次。
    3. OOO:1 次。
    4. OOM:2 次。

    最终取最小值加上总长度 -3 即可。因为最终只能保留 3 位。如果 mimi 仍是初始值,那么输出 -1。

    #include<bits/stdc++.h>
    using namespace std;
    
    signed main()
    {
    	int t;
    	cin>>t;
    	while(t--){
    		int mi=0x3f3f3f3f;
    		string st;
    		cin>>st;
    		if(st.size()<3){
    			puts("-1");
    			continue;
    		}
    		for(int i=0;i<st.size()-2;i++){
    			string str=st.substr(i,3);
    			if(str=="MOO")mi=min(mi,0);
    			else if(str=="MOM")mi=min(mi,1);
    			else if(str=="OOO")mi=min(mi,1);
    			else if(str=="OOM")mi=min(mi,2);
    		}
    		if(mi==0x3f3f3f3f)puts("-1");
    		else cout<<mi+st.size()-3<<'\n';
    	}
    }
    
    • 1

    信息

    ID
    8301
    时间
    2000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者