洛谷原题

可以用两个指针表示两个队头的位置。如果队头被吃了,指针向后移一位即可。这样一来,模拟就很方便了。

AC 记录

AC 代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s,s1;
    cin>>s>>s1;
    int cnt1=0,cnt2=0;
    int l=0,r=0;//两人糖果队头指针
    while(l<s.size()&&r<s1.size()){
        if(s[l]==s1[r]){
            cnt1++,cnt2++;
            l++,r++;
        }else{
            if(s[l]=='R'){
                if(s1[r]=='G'){
                    r++;
                    cnt1++;
                }else{
                    l++;
                    cnt2++;
                }
            }else if(s[l]=='G'){
                if(s1[r]=='B'){
                    cnt1++;
                    r++;
                }else{
                    cnt2++;
                    l++;
                }
            }else{
                if(s1[r]=='R'){
                    cnt1++;
                    r++;
                }else{
                    cnt2++;
                    l++;
                }
            }
        }
    }
    if(l==s.size()&&r==s1.size()){
        printf("%d\n%d",cnt1,cnt2);
    }else{
        if(l==s.size()){
            cnt2+=s1.size()-r;
        }else{
            cnt1+=s.size()-l;
        }
        printf("%d\n%d",cnt1,cnt2);
    }
    return 0;
}
posted on 2026-06-29 21:50  lz5332t  阅读(3)  评论(0)    收藏  举报