【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 模拟 的相关文章

  • 将 MATLAB 轴移动半步

    我正在尝试定位 MATLAB 的刻度以与我的网格对齐 但我找不到偏移标签的好方法 另外 如果我跑set gca XTickLabel 1 10 我的 x 刻度标签最终的范围为 1 到 5 这给出了什么 您需要移动刻度 但先获取标签并在移动后
  • ExtJS 6 按关联模型进行网格组

    Context 不久前我用过这个answer https stackoverflow com a 19198773 1842261实现远程排序和过滤 使用 关联模型 关联模型字段 格式 我可以轻松解析服务器端代码中的表达式以查询数据库 Pr
  • 使用 Gridsplitter 功能排列项目的项目控件

    我需要一个水平或垂直堆叠项目的布局 每个项目应由分割器分隔 以便用户可以更改大小 如 VisualStudio 中的工具箱容器 项目来自模型 因此我需要一个可以在其中设置 ItemsSource 的 ItemsControl 我的第一个想法
  • 如何在matplotlib图中的特定位置添加网格线?

    如何在 matplotlib 图中 y 轴的特定位置添加网格 是的 这很简单 使用set x y ticks的方法axes对象并正常切换网格 import matplotlib pyplot as plt fig ax plt subplo
  • 如何在android中使网格视图水平滚动而不是垂直滚动?

    我有一个动态网格视图 意味着其内容有所不同 因此 如果项目数量增加 则会进行垂直滚动 我想把它做成水平滚动 请为此提出一些解决方案
  • 添加名称和 Skus 列时,Magento 销售订单网格显示不正确的记录数

    我正在使用 Magento 1 4 版本 并向销售订单网格添加了额外的网格列 名称和 sku 返回的数据是正确的 但我在分页和记录总数方面遇到问题 我的代码如下 首先我编辑的Mage Adminhtml Block Sales Order
  • 页脚在底部有CSS网格吗?想不通吗?

    我看过其他教程 了解如何在内容很少时使用 css 网格使页脚粘在底部 但我无法弄清楚 如果你能帮忙 那就太好了 我正在学习 css grid 我花了几天时间断断续续地试图弄清楚它 margin 0 padding 0 color fffff
  • Android Spinner 项目作为网格

    默认情况下 单击微调器时 项目将显示为列表 我想更改显示为网格的项目 我怎样才能做到这一点 我只需要一些指导 谢谢 更新 这是我的代码 我的旋转下拉菜单显示为多行网格 我附上了一张它此时的样子的图片 我也无法选择值 package com
  • 是否有可用的 WPF“WrapGrid”控件或创建控件的简单方法?

    本质上我想要一个wrapPanel 但我希望项目能够捕捉到网格而不是被压到左侧 这样我就可以获得一个漂亮的统一外观的网格 它会自动消耗可用空间 WrapPanel 处理调整大小部分 WPF Contrib AutoGrid 处理一个很好的自
  • 具有级联 DropDownList 的 Kendo UI 网格

    我的 Razor 布局上有一个 Kendo UI 网格 它从控制器获取数据 在此网格中 我希望有一组 3 个 DropDownList 它们是 ProductGroups Products Services 我希望实现的行为是 当我向网格添
  • 网格与画布

    我正在寻找有关在 WPF 中使用 Canvas 与 Grid 面板的意见 我需要制作基本具有网格布局的经典输入表单 有些可能内部有小型数据网格 组框 但全部在网格布局中对齐 我正在纠结是否为我的所有表单使用网格面板或画布面板 网格给了我良好
  • 是否有用于 Tkinter/网格几何图形的 GUI 设计应用程序? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道 GUI 设计应用程序可以让您选择 拖 放小部件 然后使用适当的 Tkinter 调用和排列将
  • 在网格管理器中使用带有 Tkinter 的输入框?

    我正在尝试使用 Tkinter 制作一个基本的 GUI 并使用网格管理器在标签旁边有一个输入框 但是如果我将 grid 与 Entry 对象一起使用 则当我运行程序时 该窗口不会显示 当我使用 pack 时它确实有效 这很奇怪 因为我听说当
  • 在 C# 中对 dataGridView 列进行排序? (Windows窗体)

    我有一个从 sql 表绑定的 datagridview 在该 dv 中我有这些属性 Id Name 和 Price 当我将名称列的排序模式设置为自动并单击此列的标题时 我可以根据名称的第一个字母对此 dv 进行排序 这样我可以根据产品的第一
  • 如何过滤多个extjs网格列?

    要过滤一个网格列 我们可以使用 xtype button text Search handler function store clearFilter var searchValue Ext getCmp textFieldId getVa
  • jQuery 图像网格系统

    我有一个关于图像网格系统的问题 我创建了这个DEMO http codepen io shadowman86 pen YPpedQ来自 codepen io 在此演示中您可以看到 div class photo row div class
  • 带有合并行的 ASP.net 网格分页

    我目前正在使用 GridView 来显示表格数据 我需要合并第一列中具有相同值的单元格 目前我的代码在PreRender事件来设置RowSpan对我来说是财产 而且运作良好 问题是我无法使用分页 因为页面将在第一个字段相等的部分的中间分割
  • Susy 2:具有流动主要内容区域的固定宽度侧边栏

    使用 Susy 2 候选版本 我试图弄清楚如何创建一个带有固定宽度侧边栏的简单流体布局 无论是左侧位置还是右侧位置 我很高兴使用第一个和最后一个关键字 谁能告诉我如何在 Susy 2 中执行此操作 谢谢你 有几种方法可以混合固定 流体布局
  • Extjs - 如何在网格列中显示组合框

    我有一个网格面板 包括日期和组合列jsfiddle http jsfiddle net YjYqX 但我不想点击显示我的组合 我想在不点击的情况下显示我的组合 而不是像隐藏在单元格内一样 日期列也一样 我认为改变clicksToEdit 0
  • XAML 网格可见性转换?

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

随机推荐

  • 理解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 那么