【AtCoder】ARC095 E - Symmetric Grid 模拟
【题目】E - Symmetric Grid
【题意】给定n*m的小写字母矩阵,求是否能通过若干行互换和列互换使得矩阵中心对称。n,m<=12。
【算法】模拟
【题解】首先行列操作独立,如果已确定行操作,那么两个在对称位置的列要满足条件必须其中一列反转后和另一列相同,或m为奇数且此列在中间。
已确定了行操作后,枚举每一列,找到它可以匹配的列直接匹配,后面如果矛盾了就直接无解(因为匹配的列都是确定的,不存在决策问题),复杂度O(nm^2)。
如何确定行操作?枚举每一行的匹配行,虽然这样理论上会枚举n^(n/2)种情况,但其中只有(n-1)!!种情况合法并进入下一过程,故复杂度为O((n-1)!!*nm^2),极限为17962560,实际上列枚举存在大量返回会更快,甚至直接枚举列匹配都能2ms AC。
代码来自:zhan8855
#include <cstdio>char c[15][15],d[15],e[15]; int i,m,n;inline bool dfs2(int x) {if (x>m)return true;if (e[x])return dfs2(x+1);else{int t=0,r=0;for (int i=x;i<=m;i++)if (! e[i])t++;for (int i=x;i<=m;i++)if (! e[i]){e[x]=i,e[i]=x,r=1;for (int j=1;j<=n;j++)if ((c[j][x]!=c[d[j]][i]) || (c[d[j]][x]!=c[j][i])){r=0;break;}if(i==x){if(r&&(t&1)&&dfs2(x+1))return true;}else{if(r){if(dfs2(x+1))return true;else return false;}}/*if ((r) && ((t&1) || (i!=x)) && (dfs2(x+1)))return true;else if(i!=x)return false;*/e[x]=0,e[i]=0;}}return false; }inline bool dfs1(int x) {if (x>n)return dfs2(1);if (d[x])return dfs1(x+1);else{int t=0;for (int i=x;i<=n;i++)if (! d[i])t++;for (int i=x;i<=n;i++)if (! d[i]){d[x]=i,d[i]=x;if (((t&1) || (i!=x)) && (dfs1(x+1)))return true;d[x]=0,d[i]=0;}}return false; }int main() {scanf("%d%d",&n,&m);for (i=1;i<=n;i++)scanf("%s",c[i]+1);if (dfs1(1))puts("YES");elseputs("NO");return 0; }
View Code
转载于:https://www.cnblogs.com/onioncyc/p/8849156.html
【AtCoder】ARC095 E - Symmetric Grid 模拟相关推荐
- AtCoder AGC037D Sorting a Grid (二分图匹配)
题目链接 https://atcoder.jp/contests/agc037/tasks/agc037_d 题解 这场D题终于不像AGC032D和AGC036D一样神仙了-- 还是可做的吧 虽然考场 ...
- HTML布局之Grid模拟房间方位布局,显示摄像头等设备图标
目录 前言 一.设计 1.1 布局设计 1.1.1 初始设计 二.转变为布局 三.添加文字效果 3.1 替换图标效果 四.其他 前言 最近项目中需要显示房间中某些设备的位置信息,并用图标表示出来.调查 ...
- AtCoder Beginner Contest 203(Sponsored by Panasonic)D.Pond
题目链接 Problem Statement The land of a park AtCoder is an N×NN×NN×N grid with east-west rows and north ...
- 2020.10月做题记录
PS:本博客仅选择了一些作者认为有必要记录的题目进行记录. week -1 2020.09.28-2020.10.4 军训+国庆放假-就这样又废了一周- 2020.10.04 回来第一天完全没有状态- ...
- CVPR2018: Generative Image Inpainting with Contextual Attention 论文翻译、解读
2019独角兽企业重金招聘Python工程师标准>>> CVPR2018: Generative Image Inpainting with Contextual Attention ...
- [C1] 优化 C1FlexGrid 单元格边框
一 优化理由 如下图所示,如果按照 C1FlexGrid 自带的单元格边框设置,即对每个单元格的 CellStyle 的 BorderThickness 进行设置,会得到如下图的效果: 其中,明显可 ...
- 退役前的最后的做题记录upd:2019.04.04
考试考到自闭,每天被吊打. 还有几天可能就要AFO了呢... Luogu3602:Koishi Loves Segments 从左向右,每次删除右端点最大的即可. [HEOI2014]南园满地堆轻絮 ...
- AtCoder - 2153 An Ordinary Game list模拟 || 博弈
http://abc048.contest.atcoder.jp/tasks/arc064_b?lang=en 在vj里面用list模拟水过去了,然后感觉vj不靠谱,上atcoder交,果然tle 我 ...
- 模拟grid点击事件
当一个grid.panel里的store加载完毕后,模拟点击事件.只需在store加载事加监听即可.例子如下: onReloadCrawlerStore: function(me, records, ...
最新文章
- 模型加速--LCNN: Lookup-based Convolutional Neural Network
- Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
- python一加到二十等于多少_Python 3.1新变化之性能改善篇(转载)
- A_A03_001 stc-isp 单片机烧录软件安装与使用
- Mac xelatex
- 第五章:项目范围管理 - (5.4 创建 WBS )
- 计算机各种办公软件都很卡,电脑中打开office2016办公软件很卡的解决方法
- 国际电离层参考模型程序说明
- loadrunner录制脚本时无法打开IE浏览器
- C#专用集合类StringCollection与StringDictionary
- java ajax教程_Jquery ajax基础教程
- 做食材配送行业,哪个平台软件比较好?
- Glyphs App Essential Training Glyphs App基础教程 Lynda课程中文字幕
- 打破界限,获得新生——观电影《云图》有感
- 路由和远程访问 连接被远程计算机终止,通过RRAS(路由和远程访问)进行PPPOE拨号连接总是出现连接接口时出现一个错误,连接被远程计算机终止...
- 2022-02-22:机器人大冒险。 力扣团队买了一个可编程机器人,机器人初始位置在原点(0, 0)。小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动。指令有两种
- 输出一个*号的平行四边形
- 阿里资深技术专家何勉详解研发效能提升的关键
- docker安装mysql[主从复制版]
- Maven 环境配置