首页 > 其他分享 >P9012 [USACO23JAN] Moo Operations B题解

P9012 [USACO23JAN] Moo Operations B题解

时间:2024-01-18 21:48:00浏览次数:28  
标签:Operations return int 题解 else step USACO23JAN MOO tmp1

第 1 道赛场 AC 的题,必须发篇题解记录一下。

Tips: \(1 \le |S| \le 100\) ——题目

才 100,这就可以随便整活了。


如果你稍微懂点英语,就会知道第 \(2 \sim 4\) 个点的 \(S\) 都最多只有 \(3\) 个字符,而目标“MOO”也是 \(3\) 个字符,所以只需要模拟就可以了。

int check(string a) {
	if (a.size() < 3)  // 不让加字符,小于 3 的肯定就废了
		return -1;
	int step = 0;
	if (a == "MOO")  // 都一样了你还变它干啥,浪费表情(
		return step;
	string tmp1 = a;
	step++;
	if (tmp1[0] == 'M')  // 胡乱尝试
		tmp1[0] = 'O';
	else
		tmp1[0] = 'M';
	if (tmp1 != "MOO") {
		step++;
		if (tmp1[2] == 'M')
			tmp1[2] = 'O';
		else
			tmp1[2] = 'M';
	} else
		return step;
	if (tmp1 != "MOO") {
		step--;  // 撤销第 1 步操作,所以是--
		if (tmp1[0] == 'M')
			tmp1[0] = 'O';
		else
			tmp1[0] = 'M';
	} else
		return step;
	if (tmp1 != "MOO")
		return -1;
	return step;
}

这样你就能顺利的 AC 前三个点了。

那剩下的咋整?

“MOO”就仨字符,那你把它砍成只有仨字符的形式不就得了?反正 \(100\) 的数据量随便折腾。


ACCode:

#include <bits/stdc++.h>

using namespace std;

int n;
string str;

int min(int a, int b) {
	return a > b ? b : a;
}

bool checkSubString(string a, string b) {
	int x = a.size(), y = b.size();
	if (x <= y) {
		for (int i = 0; i < y; i++) {
			if (b[i] == a[0]) {
				bool flag = true;
				for (int j = 0; j < x; j++)
					if (b[i + j] == a[j])
						continue;
					else {
						flag = false;
						break;
					}
				if (flag)
					return true;
			}
		}
	}
	return false;
}

int check(string a) {
	if (a.size() < 3)
		return -1;
	int step = 0;
	if (a == "MOO")
		return step;
	string tmp1 = a;
	step++;
	if (tmp1[0] == 'M')
		tmp1[0] = 'O';
	else
		tmp1[0] = 'M';
	if (tmp1 != "MOO") {
		step++;
		if (tmp1[2] == 'M')
			tmp1[2] = 'O';
		else
			tmp1[2] = 'M';
	} else
		return step;
	if (tmp1 != "MOO") {
		step--;
		if (tmp1[0] == 'M')
			tmp1[0] = 'O';
		else
			tmp1[0] = 'M';
	} else
		return step;
	if (tmp1 != "MOO")
		return -1;
	return step;
}

int checker(string x) {
	if (x.size() <= 3)
		return check(x);
	int mn = 10000;
	string a[] = {"OOO", "OOM", "OMO", "OMM", "MOO", "MOM", "MMO", "MMM"};
	for (int i = 0; i < 8; i++) {
		if (checkSubString(a[i], x)) {
			int tmp = check(a[i]);
			if (tmp != -1)
				mn = min(mn, (tmp + x.size() - 3));
		}
	}
	if (mn == 10000)
		return -1;
	return mn;
}

int main() {
	scanf("%d", &n);
	for (int i = 0; i < n; i++) {
		cin >> str;
		printf("%d\n", checker(str));
		str = "";
	}
	return 0;
}

AC记录

标签:Operations,return,int,题解,else,step,USACO23JAN,MOO,tmp1
From: https://www.cnblogs.com/leo2011/p/17973457

相关文章

  • [GFCTF 2021]web部分题解(更新中ing)
    [GFCTF2021]Baby_Web拿源码环节:打开环境(◡ᴗ◡✿)乍一看什么都没有,F12下没看到js文件,但是看到了出题师傅的提示:“源码藏在上层目录xxx.php.txt里面,但你怎么才能看到它呢?”这时候在思考文件在上层目录中,既然是目录下那就试一下dirsearch扫描先看看后台都有什么(这里就直接......
  • Dojoup 安装问题解决
    Dojoup安装问题解决InstallDojouphttps://book.dojoengine.org/getting-started/quick-start.htmlcurl-Lhttps://install.dojoengine.org|bash安装失败dojoup═══════════════════════════════════════════════......
  • Oozie重试任务不生效问题解决
    1、oozie默认为不重试规则,想要重试需在action中配置重试规则,示例如下:retry-max="3"retry-interval="1"发现增加以上配置后,任务失败并未生效;2、在~/oozie/conf/oozie-site.xml中增加以下配置:<property><name>oozie.service.LiteWorkflowStoreService.user.retry.error.cod......
  • [AGC044E] Random Pawn题解
    [AGC044E]RandomPawn题解题目链接AtCoder原题链接Step1.拆环原问题是在环上的问题,考虑将环拆开变成链来处理。因此,我们需要找到一个点,使得操作越过这个点一定不优。令使\(a\)的值最大的位置的下标为\(maxp\)。容易发现,如果现在正处在\(maxp\)上,那么继续操作一定不可......
  • 题解 CF741E Arpa’s abnormal DNA and Mehrdad’s deep interest
    CF741EArpa’sabnormalDNAandMehrdad’sdeepinterest记\(R_{i}\)表示把\(T\)插入在\(S\)的第\(i\)位后组成的字符串。有\(q\)组询问,给定\((x,y,l,r)\),求\(\min_{i}R_{i},({i\in[l,r],i\%k\in[x,y]})\)。一个暴力的想法是先把\(R_{i}\)的排名求出来,这显......
  • CF1921 F Sum of Progression 题解
    QuestionCF1921FSumofProgression给定一个序列\(\{a\}\),有\(q\)组询问,对于每组询问\(s,d,k\),求\[a_s+a_{s+d}\cdot2+\cdots+a_{s+d(k-1)}\cdotk\]Solution\(s,d,k\)其实就是在描述一个等差数列考虑到\(d\timesk\len\)如果\(d\)很大,那么就意味着\(k\)很......
  • 题解 CF653F Paper task
    CF653FPapertask给定一个长度为\(n\)和括号串,求本质不同的合法括号串个数。\(n\le5\times10^5\)。考虑如果不是求本质不同,可以想到DP。设\(f_{i}\)表示以\(i\)结尾的括号串数,容易发现\(f_{i}=f_{t_{i}-1}+1\),其中\(t_{i}\)表示与\(i\)匹配的左括号位置。用栈......
  • 【深入挖掘Java技术】「源码原理体系」盲点问题解析之HashMap工作原理全揭秘(下)
    承接上文在阅读了上篇文章《【深入挖掘Java技术】「源码原理体系」盲点问题解析之HashMap工作原理全揭秘(上)》之后,相信您对HashMap的基本原理和基础结构已经有了初步的认识。接下来,我们将进一步深入探索HashMap的源码,揭示其深层次的技术细节。通过这次解析,您将更深入地理解HashMap的......
  • chrome浏览器闪屏问题解决
    描述:我在浏览B站时,在打字时突然出现了闪屏,反应很强烈!一输入就出现!我还一直以为是电脑显卡出了问题!后来查询资料发现这是谷歌很久以前的一个bug,至今都没有修复!至少在我发帖之前一直是没有解决的!开启硬件加速若想使用硬件加速,可以在网址栏输入:chrome://flags/选择ChooseANGL......
  • CF1633B题解
    Minority题面翻译给定一个\(01\)字符串\(s\),定义\(c_k(l,r)\)表示\(s\)的由下标为\([l,r]\)中的字母构成的连续子串中\(k\)的个数。定义\(f(l,r)=\begin{cases}c_0(l,r)&c_0(l,r)<c_1(l,r)\\c_1(l,r)&c_0(l,r)>c_1(l,r)\\0&c_0(l,r)=c_1(l,r)\end{cases}\),求......