题面

题目要求不能有有三个连续相同的'X'或'O',注意到这样的连续串它们的横纵坐标之和是连续变化的,考虑将它们按照横纵坐标之和对 \(3\)的模值分组,因为这样分组后相邻的三个相同字符就被分到了三个不同的组中,这样可以通过将其中一个组的字符所在位置全部变为其他字符,这样就保证没有三个连续相同字符了,那么我们分别从'X'和'O'中选出一组转化为其他字符就可以保证满足没有三个连续相同字符了。但是考虑这样的情况: \(\begin{matrix}.X. \\ OOO \\ .X.\end{matrix}\),假定中间那个'O'的横纵坐标和对 \(3\)的模值是 \(2\),这时如果'O'选的组和'X'选的组都都是模值为 \(2\)的,那么最终就会变成这样:\(\begin{matrix}.X. \\ OXO \\ .X.\end{matrix}\),明显不满足,原因在于虽然没有连续三个'O'了,但却造成了连续三个'X',而且由于这是后天造成的,之前的分组对这个新形成的'X'不起作用,导致前面的做法假了。为了避免这种情况,我们只需从'X'和 'O'中选出模数不同的两组即可。证明:假定从'X'中选出了横纵坐标和模 \(3\)为 \(1\)的组,从'O'中选出了模为 \(2\)的组,这样新产生的'X'或'O'都不会再形成新的 \(3\)连续相同字符序列。举个例子,坐标为 \((2,2)\)的'X'变成了'O',它的坐标和对 \(3\)取模是 \(1\),也就是从 'X'选的组的模值是 \(1\),那么从'O'中选的组的模值要么是 \(0\)要么是 \(2\),而一个 \(3\)连续序列必然同时包含模值为 \(0,1,2\)的点,现在缺失了 \(0\)或 \(2\)故不可能产生新的连续序列。证毕。然后为了满足题目操作限制的要求,我们需要选择两个组满足这两个组包含的点数最少。

#include<cstdio>
#include<cstring> int T, n;
int X[5], O[5];
char s[305][305]; int main(){
scanf("%d", &T);
while(T--){
scanf("%d", &n);
memset(X, 0, sizeof(X));
memset(O, 0, sizeof(O));
for(int i = 1; i <= n; ++i) scanf("%s", s[i] + 1);
for(int i = 1; i <= n; ++i)
for(int t = 1; t <= n; ++t){
if(s[i][t] == 'X') ++X[(i + t) % 3];
if(s[i][t] == 'O') ++O[(i + t) % 3];
}
int minn = 1e9, j, k;
for(int i = 0; i < 3; ++i)
for(int t = 0; t < 3; ++t)
if(i != t && X[i] + O[t] < minn){
minn = X[i] + O[t];
j = i, k = t;
}
for(int i = 1; i <= n; ++i)
for(int t = 1; t <= n; ++t){
if(s[i][t] == 'X' && (i + t) % 3 == j) s[i][t] = 'O';
if(s[i][t] == 'O' && (i + t) % 3 == k) s[i][t] = 'X';
}
for(int i = 1; i <= n; ++i) puts(s[i] + 1);
}
return 0;
}

【Codeforces Global Round 12】 C2 - Errich-Tac-Toe题解(思维)的更多相关文章

  1. Codeforces Global Round 12 D. Rating Compression (思维,双指针)

    题意:给你一长度为\(n\)的数组,有一长度为\(k\ (1\le k \le n)\)的区间不断从左往右扫过这个数组,总共扫\(n\)次,每次扫的区间长度\(k=i\),在扫的过程中,每次取当前区间 ...

  2. C. Meaningless Operations Codeforces Global Round 1 异或与运算,思维题

    C. Meaningless Operations time limit per test 1 second memory limit per test 256 megabytes input sta ...

  3. Codeforces Global Round 2 E. Pavel and Triangles(思维+DP)

    题目链接:https://codeforces.com/contest/1119/problem/E 题意:有n种长度的棍子,有a_i根2^i长度的棍子,问最多可以组成多少个三角形 题解:dp[i]表 ...

  4. CodeForces Global Round 1

    CodeForces Global Round 1 CF新的比赛呢(虽然没啥区别)!这种报名的人多的比赛涨分是真的快.... 所以就写下题解吧. A. Parity 太简单了,随便模拟一下就完了. B ...

  5. Codeforces Global Round 1 - D. Jongmah(动态规划)

    Problem   Codeforces Global Round 1 - D. Jongmah Time Limit: 3000 mSec Problem Description Input Out ...

  6. Codeforces Beta Round #12 (Div 2 Only)

    Codeforces Beta Round #12 (Div 2 Only) http://codeforces.com/contest/12 A 水题 #include<bits/stdc++ ...

  7. Codeforces Global Round 2 题解

    Codeforces Global Round 2 题目链接:https://codeforces.com/contest/1119 A. Ilya and a Colorful Walk 题意: 给 ...

  8. Codeforces Global Round 1 (A-E题解)

    Codeforces Global Round 1 题目链接:https://codeforces.com/contest/1110 A. Parity 题意: 给出{ak},b,k,判断a1*b^( ...

  9. Codeforces Global Round 3

    Codeforces Global Round 3 A. Another One Bites The Dust 有若干个a,有若干个b,有若干个ab.你现在要把这些串拼成一个串,使得任意两个相邻的位置 ...

  10. Codeforces Global Round 1 (CF1110) (未完结,只有 A-F)

    Codeforces Global Round 1 (CF1110) 继续补题.因为看见同学打了这场,而且涨分还不错,所以觉得这套题目可能会比较有意思. 因为下午要开学了,所以恐怕暂时不能把这套题目补 ...

随机推荐

  1. 个人用C#编写的壁纸管理器 - 开源研究系列文章

    今天介绍一下笔者自己用C#开发的一个小工具软件:壁纸管理器. 开发这个小工具的初衷是因为Windows操作系统提供的功能个人不满意,而且现在闲着,所以就随意写了个代码.如果对读者有借鉴参考作用就更好了 ...

  2. 三维模型OSGB格式轻量化技术在大规模场景的加载和渲染的作用分析

    三维模型OSGB格式轻量化技术在大规模场景的加载和渲染的作用分析 在移动设备上,大规模场景的加载和渲染是一个不容忽视的问题.对于OSGB格式轻量化处理来说,大规模场景的加载和渲染也是其中一项重要的任务 ...

  3. 用ChatGPT三分钟免费做出数字人视频- 提升自媒体魅力

    本教程收集于:AIGC从入门到精通教程汇总 操作指引 ChatGPT产生文案=>腾讯智影数字人播报=>粘贴文案=>导出视频. 说明:部分资源只有会员才能用~,非会员可生成5分钟视频. ...

  4. 【故障公告】一而再,再而三,三翻四复:数据库服务器 CPU 100%

    会员救园,故障捣乱,每当困难时,故障们总是喜欢雪上加霜过来考验你. 今天下班前 17:43~17:47 期间,园子的 SQL Server 数据库服务器突然出现 CPU 100% 问题. 发现问题后, ...

  5. 使用API接口获取商品数据

    ​ 在当今的数字化时代,商品数据的获取对于各种规模的企业来说都至关重要.这些数据可以帮助企业进行市场分析,制定销售策略,优化库存管理,以及实现精准营销.API(应用程序编程接口)是一种便捷的方式来获取 ...

  6. [译]这几个CSS小技巧,你知道吗?

    前言 在网页设计和前端开发中,CSS属性是非常重要的一部分.掌握常用的CSS属性不仅可以使你的网页看起来更美观,还能提升用户体验,今天小编为大家介绍8个常见的CSS小技巧: 1.修改滚动条样式 下图是 ...

  7. 开源.NetCore通用工具库Xmtool使用连载 - 图形验证码篇

    [Github源码] <上一篇> 介绍了Xmtool工具库中的Web操作类库,今天我们继续为大家介绍其中的图形验证码类库. 图形验证码是为了抵御恶意攻击出现的一种设计:例如用户登录.修改密 ...

  8. 从 5s 到 0.5s!CompletableFuture 异步任务优化技巧,确实优雅!

    一个接口可能需要调用 N 个其他服务的接口,这在项目开发中还是挺常见的.举个例子:用户请求获取订单信息,可能需要调用用户信息.商品详情.物流信息.商品推荐等接口,最后再汇总数据统一返回. 如果是串行( ...

  9. 「codeforces - 1720」

    壹 最近 cq 情况很急急,昨天出去排核酸整了两个半小时,十分无语.提前放假自然是一大好事,但是一个人在家也蛮无聊.不要再涨体重了为好,这一年间他妈 delta 了 10 kilos,算了下 BMI ...

  10. 【ASP.NET Core】在 Mini-API 中注入服务

    经过版本更新,Mini API 的功能逐步完善,早期支持得不太好的 mini API 现在许多特性都可以用了,比如灰常重要的依赖注入. 咱们先来个相当简单的注入测试.来,定义一个服务类,为了偷懒,老周 ...