codeforces Codeforces Round #597 (Div. 2) B. Restricted RPS 暴力模拟

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
char x[105];
char xx[105];
int main() {
    int t;
    cin>>t;
    while(t--) {
        int a,b,c,n;
        cin>>n>>a>>b>>c;
        for(int i=0; i<n; i++) xx[i]=0;
        scanf("%s",x);
        int r=0,p=0,s=0;
        for(int i=0; i<n; i++) {
            if(x[i]=='R') r++;
            else if(x[i]=='P') p++;
            else s++;
        }
        int ans=0;
        ans+=min(r,b);
        ans+=min(p,c);
        ans+=min(s,a);
        if(ans>=(n+1)/2) {
            printf("YES\n");
            for(int i=0; i<n; i++) {
                if(x[i]=='R'&&b>0) {
                    xx[i]='P';
                    b--;
                } else if(x[i]=='P'&&c>0) {
                    xx[i]='S';
                    c--;
                } else if(x[i]=='S'&&a>0) {
                    a--;
                    xx[i]='R';
                }
            }
            for(int i=0; i<n; i++) {
                if(xx[i]==0) {
                    if(a>0) {
                        printf("R");
                        a--;
                    } else if(b>0) {
                        printf("P");
                        b--;
                    } else if(c>0) {
                        c--;
                        printf("S");
                    }
                } else printf("%c",xx[i]);
            }
            printf("\n");
        } else {
            printf("NO\n");
        }
    }
    return 0;
}

 

上一篇:一分钟了解QPS TPS RPS


下一篇:Codeforces Round #597 (Div. 2) B. Restricted RPS