Codeforces Round #706 (Div. 2) E. Garden of the Sun 思维构造
传送门
题意: 给你一个n×mn×mn×m的矩阵,其中包含字符′.′'.'′.′和′X′'X'′X′,你可以将任何′.′'.'′.′改成′X′'X'′X′,现在问你能否通过修改一些′.′'.'′.′来使′X′'X'′X′联通且不存在环。保证原本的′X′'X'′X′没有任何两个相邻。
思路: 既然我把最后一句话加粗了,那就肯定有用啦。 由于初始状态不会有任何两个相邻的,那么我们考虑一个mmm列的矩阵,先不需要考虑行,如果我从第一列开始,将这一列全部改成′X′'X'′X′,让后相邻两列间隔是两列,如下图:
因为题目保证了没有两个相邻,所以保证了第一列和第四列是不连通的,让后我们从中间两列找一行存在′X′'X'′X′的一行(都没有′X′'X'′X′就任取一行),把这行的两个格子全部都改成′X′'X'′X′即可,这样两边就联通了。当然这样只适合mmod3=1m\bmod 3=1mmod3=1和mmod3=2m\bmod 3=2mmod3=2的情况,对于mmod3=0m\bmod 3=0mmod3=0的情况,我们发现后面会多出来两列,所以我们只需要将原来1,4,7,..1,4,7,..1,4,7,..的位置改成2,5,8,...2,5,8,...2,5,8,...即可。
对于mmod3=2m\bmod3=2mmod3=2的情况,两种取法都可。
复杂度O(nm)O(nm)O(nm)
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=510,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n,m;
char s[N][N];int main()
{// ios::sync_with_stdio(false);
// cin.tie(0);int _; scanf("%d",&_);while(_--){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%s",s[i]+1);if(m%3==0||m%3==2){for(int i=2;i<=m;i+=3){for(int j=1;j<=n;j++) s[j][i]='X';if(i>2){int id=1;for(int j=1;j<=n;j++) if(s[j][i-1]=='X'||s[j][i-2]=='X') id=j;s[id][i-1]=s[id][i-2]='X';}}}else{for(int i=1;i<=m;i+=3){for(int j=1;j<=n;j++) s[j][i]='X';if(i>1){int id=1;for(int j=1;j<=n;j++) if(s[j][i-1]=='X'||s[j][i-2]=='X') id=j;s[id][i-1]=s[id][i-2]='X';}}}for(int i=1;i<=n;i++) printf("%s\n",s[i]+1);}return 0;
}
/**/
Codeforces Round #706 (Div. 2) E. Garden of the Sun 思维构造相关推荐
- Codeforces Round #624 (Div. 3) E. Construct the Binary Tree 思维 + 构造
传送门 文章目录 题意: 思路: 题意: 给你n,dn,dn,d,让你构造有nnn个点的二叉树,他们每个节点深度和为ddd. n,d≤3000n,d\le 3000n,d≤3000. 思路: 先考虑不 ...
- Codeforces Round #701 (Div. 2) D. Multiples and Power Differences 思维构造
传送门 题意: 给定一个矩阵aaa,让你构造一个矩阵bbb,要求矩阵bbb的每个元素是aaa对应位置元素的倍数,且矩阵bbb的每两个相邻元素相差为k4(k>=1)k^4(k>=1)k4(k ...
- Codeforces Round #706 (Div. 2)-A. Split it!-题解
目录 Codeforces Round #706 (Div. 2)-A. Split it! Problem Description Input Output Sample Input Sample ...
- Codeforces Round #706 (Div. 2)B. Max and Mex
Codeforces Round #706 (Div. 2)B. Max and Mex 题目 题目大意 刚开始给你n个不同的数,k次询问每次求在该序列中已存在的最大的数和不存在的最小的数(大于等于零 ...
- Codeforces Round #706 (Div. 2)-B. Max and Mex-题解
目录 Codeforces Round #706 (Div. 2)-B. Max and Mex Problem Description Input Output Sample Input Sampl ...
- Codeforces Round #732 (Div. 2) C. AquaMoon and Strange Sort 思维
传送门 文章目录 题意: 思路: 题意: 给你nnn个数,每个数初始方向是向右,每次可以交换相邻两个位置并且将这两个位置的方向调换,问这个序列的最终状态能否是非递减且方向都向右. n≤1e5,ai≤1 ...
- Codeforces Round #588 (Div. 2) D. Marcin and Training Camp 思维
传送门 文章目录 题意: 思路: 题意: 有nnn个人,每个人都有一个能力值bib_ibi以及他会的技能aia_iai,当他会第xxx个技能的时候,aia_iai的第xxx位是111.定义当xx ...
- Codeforces Round #727 (Div. 2) E. Game with Cards dp + 思维
传送门 文章目录 题意: 思路: 题意: 初始有左右手,上面各有一个数字为000的卡牌,每次都有一个新卡kik_iki,你可以将其放在左手或者右手,使两只手上的卡片范围在[ll,i,rl,i][l_ ...
- Codeforces Round #715 (Div. 1) C. Complete the MST 补图 + 思维 + 最小生成树
传送门 文章目录 题意: 思路 题意: 给你一张nnn个点mmm个边的图,mmm条边是给定的,要求你给未给定的边赋值一个边权,使得所有边权异或和为000,求所有满足这种情况的图中最小生成树边权和最小的 ...
最新文章
- 关于NLP相关技术全部在这里:预训练模型、图神经网络、模型压缩、知识图谱、信息抽取、序列模型、深度学习、语法分析、文本处理...
- PostgreSQL9.6+新增空闲事务自动查杀功能
- 导出文件后打不开_PPT | 快速导出4K超高视频
- python怎么在图片上写字_Python在图片中添加文字的两种方法
- Adobe全系软件下载安装工具 CCMaker 1.3.6
- “渠道之王”2.0 百丽携手乐淘的背后
- 边境线 详解(C++)
- ESP8266(3)
- 实心和空心哪个抗弯能力强_为什么轮胎不设计成实心的?不怕爆胎 480阅读
- C++语法知识复习2(黑马程序员教程P109-p146)
- lammps后处理:Python调用Ovito模块配置方法
- linux apt 安装命令
- 2018深圳杯数学建模A题
- 太恶心了!百度员工在内网分享“日本AV女优链接” 遭开除后,还有脸上诉.........
- Linux上查找最大文件的 3 种方法
- 积分上限函数的导数例题 笔记
- android app银联支付,android app 快速接入银联支付流程(android studio版)
- pythonrefprop怎么设置_Refprop调用Excel设置步骤
- ThinkPHP5_无限极分类
- VLC WebPlugin中文
热门文章
- python单例模式继承_Python四种实现单例模式的方法
- 中国第一个发《Nature》的竟然是清朝人!被皇帝夸天下第一,他却觉得羞耻..........
- 最懂男人心的内裤,戳100个洞透气,超舒服
- 这个年纪,喜欢你的肉体还会送你包的,原来是......
- 从网恋到失恋只需要一秒...
- 如何用大数据找到男/女朋友?
- JAVA类思维_面向对象思维 Java中的类和对象及其应用
- getchar()到底怎么用_怎样才能真正发挥肥效,腐植酸水溶肥到底怎么用
- python 空指针_Python&CType空指针错误
- 计算机竞赛游戏探险岛,冒险岛2五大全新团本综合分析