【AtCoder】ARC095 E - Symmetric Grid 模拟

2023-05-16

【题目】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");
    else
        puts("NO");
    return 0;
}  
View Code

 

转载于:https://www.cnblogs.com/onioncyc/p/8849156.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【AtCoder】ARC095 E - Symmetric Grid 模拟 的相关文章

  • 方形网格 - XML

    在我的研究中 我必须编写一个 Android 应用程序来从气象站检索天气数据 这些将显示在块中 这些块将分成 4 列和 2 行 所以我想创建一个 4 列 2 行的方形网格来提供块 有人可以提供解决方案来帮助我创建这个网格吗 有很多选择 1
  • WPF 网格布局面板,行高设置为“自动”

    我想要一个顶部和底部各有一行的网格 其中有标签或按钮 在中间我计划使用一个列表框 我希望列表框能够扩展以使用所有可用空间 最好不要对其他两行的高度进行硬编码 我的 XAML 如下 如何让中间部分自动展开 谢谢
  • 删除 QML 网格的子项

    我想循环遍历 QML 网格的子级并使用 Javascript 销毁它们中的每一个 Grid id contentGrid spacing 10 ImageItem imageSource file foo jpeg destroy this
  • java swing 将 JPanel 与鼠标侦听器的行列值关联

    我正在编写一个带有 GUI 的棋盘游戏 基本上我有一个 10x10 GridLayout JPanel 每个网格单元都是一个方形 JPanel 我对这些 JPanel 使用了 BorderLayout 因此边框可见 无论如何 我想要这样 当
  • Bootstrap 网格列相互重叠

    我对 Bootstrap 的网格布局和其中的列重叠有疑问 我不确定问题到底是什么 任何建议将不胜感激 谢谢 div class container div class row div class col md 6 img src conte
  • 使用引导网格系统嵌套行?

    我想要 1 个较大的图像和 4 个 2x2 格式的较小图像 如下所示 我最初的想法是将所有东西都放在一排 然后创建两列 并在第二列中创建两行和两列以创建 1x1 和 2x2 效果 但是 这似乎不可能 或者我只是做得不正确 引导版本 3 x
  • 如何以百分比形式设置 Ext.grid.ColumnModel 中的宽度?

    如何设置宽度Ext grid ColumnModel以百分比计算 使用总共 100 的列宽数字并使用 ForceFit 配置视图 例如 var grid new Ext grid GridPanel cm new Ext grid Colu
  • 在 ExtJS 网格中编辑整行后触发“afteredit”?

    我有一个 ExtJS 编辑器网格 里面有一些列 我想修改记录上的数据并将数据自动保存到数据库 但我只需要在完成编辑当前行的所有单元格后保存数据 我使用了 afteredit 事件 但它在一个单元格更改后立即触发了该事件 在完成所有单元格的修
  • 如何将wordpress循环与网格系统引导程序一起使用?

    我想显示一个带两列的条形行 其中包含wordpress循环内容 标题 以绿色块表示 每行都有白色和灰色背景的列 这些列在每行中反转 就像国际象棋检查器一样 see the image for more detail 编辑答案 我相信这就是您
  • ColumnDefinition MinWidth 无法正常工作

    我在 WPF xaml 中使用网格 并且在 ColumnDefinition 中使用 MinWidth 属性时出现一些奇怪的效果 例如 当我使用 9 ColumnDefinition 并且每个 ColumnDefinition 都有 Wid
  • ExtJS EditorGridPanel 中的级联组合框

    我有一个正在运行的 EditorGrid 面板 其中两列有 ComboBox 编辑器 两个组合框都是从数据库远程加载的 countryStore and cityStore 我想限制cityComboBox仅显示所选国家 地区的城市 我需要
  • XAML 网格可见性转换?

    我有一个网格 其可见性绑定到我的视图模型中的属性 这一切都工作正常 网格正确地出现 消失 我的问题是 如何应用过渡 以便网格内容滑入 UI 边缘 而不是立即从屏幕上消失 当它可见时 它应该再次滑出
  • 如何使 StringGrid 的列适合网格的宽度?

    我已经寻找解决方案很长时间了 但没有任何运气 有谁知道一个简单的方法来做到这一点 例如 我想拉伸网格的第二列以适应网格的宽度 Use the ColWidths财产 像这样 with StringGrid1 do ColWidths 1 C
  • 不同类型的 C++ 对称二元运算符

    我正在学习 C 我想知道是否可以深入了解创建适用于两种不同类型实例的二元运算符的首选方法 这是我为了说明我的担忧而制作的一个例子 class A class B class A private int x public A int x in
  • 根据屏幕尺寸更改 md-grid-list 的布局或 cols 值

    我正在使用的网格列表角材2 https material angular io components grid list examples 这是笨蛋https plnkr co edit 0v9R3e4x3tThh85147x7 p pre
  • Extjs 4.0.7,编辑器网格 - 如何获取更新的单元格值?

    我需要在控制器中获取 检索 更新的单元格值 MVC 所以我尝试了这个 var modified this getItemGrid getStore getUpdatedRecords console log modified return
  • GridSplitter 从右侧调整大小 - 奇怪的行为

    使用 Kaxaml 从左侧调整大小可以按预期工作
  • 如何使用 MATLAB 的“等值面”函数创建三角球体

    如何创建一个三角球体 其中每个三角形的面面积相同 我想要这样的东西 http imageshack us a img198 5041 71183923 png http imageshack us a img198 5041 7118392
  • 将 Kendo Grid 数据发布到 MVC 中的控制器

    我有两节课 包含另一个类的列表的一个 public string Name get set public string Surname get set public int Age get set public List
  • Grid 的 SharedSizeGroup 和 * 大小调整

    我有一个用户控件 调用它UserControl 它有一个带有以下列定义的网格

随机推荐

  • 理解WinRT

    WinRT Windows Runtime 是微软新一代在Win8 Metro下开发框架 xff0c 它是一套面向对象 跨语言并且是Native的库 如果有人问我WinRT的核心技术是什么 xff1f 我的答案是 COM 43 Net Me
  • vim 基本使用

    vim 下基本命令 重新加载 vimrc source vimrc 列出当前缓冲区的所有文档 ls 然后使用 b 43 编号 移至该文档 选中多行 v 43 shift 然后 j k 上下移动 缩进单行 gt gt lt lt 当前行到结尾
  • hashcode()和equals()的作用、区别、联系

    介绍一 hashCode 方法和equal 方法的作用其实一样 xff0c 在Java里都是用来对比两个对象是否相等一致 xff0c 那么equal 既然已经能实现对比的功能了 xff0c 为什么还要hashCode 呢 xff1f 因为重
  • c语言文件中存入/读取double型矩阵型数据

    test c Created on Jun 1 2019 Author lgh include lt stdio h gt include lt stdlib h gt double allocation memory double int
  • windows自动更新变成了灰色,不能选择的原因

    现象 发现我的电脑 属性 自动更新里面所有的按钮都已经是灰色的了 xff0c 而且每次开机都会自动运行自动更新 xff0c 关闭进程也无法停止 xff0c 几秒钟后又会开始更新 xff0c 而且更新后会要求重新启动 控制面板里的安全中心显示
  • 在 Debian Stretch 上安装 FFmpeg

    FFmpeg 是一款流行的多媒体框架 xff0c 可以用来记录 转换数字音频 视频 xff0c 并能将其转化为流的开源计算机程序 采用LGPL或GPL许可证 它提供了录制 转换以及流化音视频的完整解决方案 它包含了非常先进的音频 视频编解码
  • MHA使用手册一:概述(基于0.56版本)

    本文基于MHA官方文档0 56版wiki翻译而成 原文链接 xff1a https github com yoshinorim mha4mysql manager wiki 概述 概述 MHA以最少的停机时间 xff08 通常在10 30秒
  • 海思开发板FFmpeg+Nginx,推流RTMP播放(优秀教程收集+实操整理)

    海思开发板FFmpeg 43 Nginx推流RTSP播放 xff08 优秀教程收集 43 实操整理 xff09 安装FFmpeg及移植FFmpeg编译问题收录 xff1a static declaration of 39 cbrt 39 f
  • mysql配置文件详解

    basedir 61 path使用给定目录作为根目录 安装目录 character sets dir 61 path给出存放着字符集的目录 datadir 61 path从给定目录读取数据库文件 pid file 61 filename为m
  • 华测服务器进不去系统,华测云服务器如何登陆

    华测云服务器如何登陆 内容精选 换一换 当您拥有一台专属主机后 xff0c 您可以在专属主机上创建相应规格族的云服务器 在专属主机上创建云服务器前 xff0c 您必须先完成以下工作 xff1a 购买专属主机如果不使用系统自动创建的默认安全组
  • 七牛云存储 CDN 使用指南

    七牛cdn 使用指南 更新于2016 3 13 分为两种情况 xff1a 1 使用七牛存储 2 直接使用七牛cdn 一 使用七牛存储 xff08 七牛的存储默认使用cdn加速 xff09 静态资源存储到七牛后 xff0c 可以使用七牛提供的
  • 如何在 Debian 中安装 DHCP 服务器

    动态主机配置协议 xff08 DHCP xff09 是一种用于使主机能够从服务器自动分配 IP 地址和相关的网络配置的网络协议 DHCP 服务器分配给 DHCP 客户端的 IP 地址处于 租用 状态 xff0c 租用时间通常取决于客户端计算
  • 重磅更新:码云企业版之项目多仓库功能上线!!!

    开发四年只会写业务代码 xff0c 分布式高并发都不会还做程序员 xff1f 现在的软件开发是越来越复杂了 xff0c 以前讲系统化 模块化 xff0c 现在讲微服务化 xff0c 前后端分离 xff0c 各种编程语言混搭 xff0c 还有
  • tracking 问题解决

    1 dir 或者C 43 43 函数读文件名 xff0c 不推荐 搞乱了名字 2 matio读写矩阵 转载于 https www cnblogs com Wanggcong p 5651081 html
  • Docker系列07—Dockerfile 详解

    Docker系列07 Dockerfile 详解 1 认识Dockerfile 1 1 镜像的生成途径 基于容器制作 dockerfile xff0c docker build 基于容器制作镜像 xff0c 已经在上篇Docker系列06
  • Linux SWAP 深度解读

    概述 本文讨论的swap基于Linux4 4内核代码 Linux内存管理是一套非常复杂的系统 xff0c 而swap只是其中一个很小的处理逻辑 希望本文能让读者了解Linux对swap的使用大概是什么样子 阅读完本文 xff0c 应该可以帮
  • QT QByteArray的十进制与十六进制(字符型) 互相转换 -串口编程

    串口使用中会经常用到 目前使用到的是QByteArray number 源数据 xff0c 目标输出的进制 作下记录 xff0c 以供日后参考 转制方法有很多 xff0c 这只是其中一种 xff0c 有其他QT的进制转换方法 xff0c 欢
  • Ubuntu系统上All-in-one部署OpenStack

    虚拟机软件 xff1a VMware Workstaion12 操作系统 xff1a Ubuntu14 04 1 修改Ubuntu14 04的apt源为国内的阿里源 xff1a cp etc apt sources list etc apt
  • Debian9服务器安装

    对于使用惯windows系统的人来说 xff0c 刚开始接触使用linux系统一定是很不习惯 xff0c 因为使用环境的变化经常会出现一些错误 当然 xff0c 对于我来说 xff0c 我也是刚刚才开始接触Linux xff0c 对此 xf
  • 【AtCoder】ARC095 E - Symmetric Grid 模拟

    题目 E Symmetric Grid 题意 给定n m的小写字母矩阵 xff0c 求是否能通过若干行互换和列互换使得矩阵中心对称 n m lt 61 12 算法 模拟 题解 首先行列操作独立 xff0c 如果已确定行操作 xff0c 那么