题意:
解法:
将矩阵按(i+j)%3分类染色,取其中数量最少的一种颜色进行修改即可。
显然颜色最少的部分一定<=k/3。
code:
#include<bits/stdc++.h>
#define int long long
#define PI pair<int,int>
using namespace std;
const int maxm=2e6+5;
vector<PI>g[3];
char s[333][333];
int n;
void solve(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>(s[i]+1);
}
for(int i=0;i<3;i++)g[i].clear();
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(s[i][j]=='.')continue;
g[(i+j)%3].push_back({i,j});
}
}
int mi=0;
for(int i=0;i<3;i++){
if(g[i].size()<g[mi].size()){
mi=i;
}
}
for(auto i:g[mi]){
s[i.first][i.second]='O';
}
for(int i=1;i<=n;i++){
cout<<(s[i]+1)<<endl;
}
}
signed main(){
ios::sync_with_stdio(0);cin.tie(0);
int T;cin>>T;while(T--)
solve();
return 0;
}