AtCoder Beginner Contest 320 Problem C - Slot Strategy 2 (Easy) 题解
题目简述
给定 \(3\) 个长度为 \(m\) 的转盘,转动过后三个转盘分别可以在不同的时间停下,求停下时所有转盘都显示相同数字的最小时间。
思路
由于这题 \(m \le 100\),数据较水,所以可以先把每个数列都复制 \(2\) 遍,因为最坏情况下是每个转盘都只出现一样的数字一次,而且在同一个位置,这时最多转 \(3\) 圈就可以把首位统一。
\(3\) 重循环枚举位置,如果 \(3\) 个位置不相等,且数字一样,那么就更新答案,答案为三个位置中的最大值。
最后如果答案还是设定的初始值,那么输出 -1
。
Accepted Code
#include<iostream>
#include<algorithm>
#include<climits>
using namespace std;
int m,ans = INT_MAX;
string a,b,c;
int main(){
cin >> m >> a >> b >> c;
a += a + a, b += b + b, c += c + c;
for (int i = 1; i <= 3 * m; i++){
for (int j = 1; j <= 3 * m; j++){
for (int k = 1; k <= 3 * m; k++){
if (i == j || j == k || i == k){
continue;
}
if (a[i - 1] == b[j - 1] && b[j - 1] == c[k - 1] && a[i - 1] == c[k - 1]){
ans = min(ans,max({i, j, k}) - 1);
}
}
}
}
if (ans == INT_MAX){
ans = -1;
}
cout << ans;
return 0;
}
标签:Accepted,int,题解,ABC320C,include,转盘
From: https://www.cnblogs.com/codehyx-blog/p/solution-abc320_c.html