专栏文章
题解:P14173 【MX-X23-T3】猜拳游戏
P14173题解参与者 7已保存评论 7
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @mino6czc
- 此快照首次捕获于
- 2025/12/02 05:37 3 个月前
- 此快照最后确认于
- 2025/12/02 05:37 3 个月前
题意简述
找到 和 序列在接近无限次比赛中不出现平局的最小修改次数。
思路分析
定义 ,
可以发现每一个元素会和对面每 个元素产生重复,所以按照最大公因数分为 组,每一组中找到最小的修改次数。
AC CODE
CPP#include<iostream>
#include<set>
using namespace std;
char a[500005],b[500005];
int GCD(int a,int b)
{
if(a%b==0) return b;
return GCD(b,a%b);
}
int ar,ap,as,br,bp,bs;
int ans;
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=m;i++)
{
cin>>b[i];
}
int g=GCD(n,m);
for(int i=1;i<=g;i++)
{
ar=0,as=0,ap=0;
br=0,bs=0,bp=0;
for(int j=i;j<=n;j+=g)
{
if(a[j]=='R') ar++;
if(a[j]=='S') as++;
if(a[j]=='P') ap++;
}
//cout<<ar<<" "<<as<<" "<<ap<<endl;
for(int j=i;j<=m;j+=g)
{
if(b[j]=='R') br++;
if(b[j]=='S') bs++;
if(b[j]=='P') bp++;
}
//cout<<br<<" "<<bs<<" "<<bp<<endl;
ans+=min(ar+bs+ap,min(ar+as+bp,min(ar+bs+bp,min(br+as+bp,min(br+bs+ap,br+as+ap)))));
}
cout<<ans;
return 0;
}
相关推荐
评论
共 7 条评论,欢迎与作者交流。
正在加载评论...