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; }