【Codeforces Global Round 12】 C2 - Errich-Tac-Toe题解(思维)
题目要求不能有有三个连续相同的'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题解(思维)的更多相关文章
- Codeforces Global Round 12 D. Rating Compression (思维,双指针)
题意:给你一长度为\(n\)的数组,有一长度为\(k\ (1\le k \le n)\)的区间不断从左往右扫过这个数组,总共扫\(n\)次,每次扫的区间长度\(k=i\),在扫的过程中,每次取当前区间 ...
- C. Meaningless Operations Codeforces Global Round 1 异或与运算,思维题
C. Meaningless Operations time limit per test 1 second memory limit per test 256 megabytes input sta ...
- Codeforces Global Round 2 E. Pavel and Triangles(思维+DP)
题目链接:https://codeforces.com/contest/1119/problem/E 题意:有n种长度的棍子,有a_i根2^i长度的棍子,问最多可以组成多少个三角形 题解:dp[i]表 ...
- CodeForces Global Round 1
CodeForces Global Round 1 CF新的比赛呢(虽然没啥区别)!这种报名的人多的比赛涨分是真的快.... 所以就写下题解吧. A. Parity 太简单了,随便模拟一下就完了. B ...
- Codeforces Global Round 1 - D. Jongmah(动态规划)
Problem Codeforces Global Round 1 - D. Jongmah Time Limit: 3000 mSec Problem Description Input Out ...
- Codeforces Beta Round #12 (Div 2 Only)
Codeforces Beta Round #12 (Div 2 Only) http://codeforces.com/contest/12 A 水题 #include<bits/stdc++ ...
- Codeforces Global Round 2 题解
Codeforces Global Round 2 题目链接:https://codeforces.com/contest/1119 A. Ilya and a Colorful Walk 题意: 给 ...
- Codeforces Global Round 1 (A-E题解)
Codeforces Global Round 1 题目链接:https://codeforces.com/contest/1110 A. Parity 题意: 给出{ak},b,k,判断a1*b^( ...
- Codeforces Global Round 3
Codeforces Global Round 3 A. Another One Bites The Dust 有若干个a,有若干个b,有若干个ab.你现在要把这些串拼成一个串,使得任意两个相邻的位置 ...
- Codeforces Global Round 1 (CF1110) (未完结,只有 A-F)
Codeforces Global Round 1 (CF1110) 继续补题.因为看见同学打了这场,而且涨分还不错,所以觉得这套题目可能会比较有意思. 因为下午要开学了,所以恐怕暂时不能把这套题目补 ...
随机推荐
- 一文理解GIT的代码冲突
对于GIT,不知道有没有人和我一样,很长时间都是小心翼翼.紧张兮兮,生怕一不小心,自己辛苦写的代码没了. 特别是代码冲突,更是难到我无法理解,每次都要求助于百度,跟着人家的教程一步步解决,下一次还是这 ...
- flink-cdc同步mysql数据到elasticsearch
1,什么是cdc CDC是(Change Data Capture 变更数据获取)的简称.核心思想是,监测并捕获数据库的变动(包括数据 或 数据表的插入INSERT.更新UPDATE.删除DELETE ...
- maven系列:基本命令(创建类、构建打包类、IDEA中操作)
目录 一.创建类命令 创建普通Maven项目 创建Web Maven项目 发布第三方Jar到本地库中 二.构建打包类命令 编译源代码 编译测试代码 编译测试代码 打包项目 清除打包的项目 清除历史打包 ...
- *CTF和nssctf#16的wp
*ctf2023 fcalc 分析程序 本题存在漏洞,是生活中很容易犯的错误,就是循环或者判断的时候没有注意多一还是少一,这种会发生很严重的问题.比如这个题在过滤数字的时候没有过滤掉0,所以输入0的时 ...
- Go语句与表达式深度解析:全案例手册
关注公众号[TechLeadCloud],分享互联网架构.云服务技术的全维度知识.作者拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资 ...
- 触动精灵生成的APK文件如何加固保护
触动精灵是一款模拟手机触摸.按键操作的软件,通过制作脚本,可以让触动精灵代替双手,自动执行一系列触摸.按键操作, 深受一些极客开发者喜爱. 触动精灵生成的APK文件自带了一些基础的加密,可以保护APK ...
- mysqlbinlog输出sql
./mysqlbinlog -v --base64-output=DECODE-ROWS ~/Downloads/tymysql2|grep -A4 'ALTER' >~/Downloads/a ...
- Ds100p -「数据结构百题」11~20
11.P3203 [HNOI2010]弹飞绵羊 某天,\(Lostmonkey\) 发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏. 游戏一开始,\(Lostmonkey ...
- Solution -「ZJOI 2014」力
Descrption Link. 对于每一个 \(i\),求出: \[\sum_{j=1}^{i-1}\frac{a_{j}}{(i-j)^{2}}-\sum_{j=i+1}^{n}\frac{a_{ ...
- oracle-组合索引字段位置与查询效率之间的关系
Oracle索引组合字段的位置不同,当查询条件不能覆盖索引时,影响查询效率.查询条件是不是索引字段的第一列影响执行计划,实验验证 实验1:查询条件为组合索引的第一列--创建测试表 create tab ...