AtCoder Beginner Contest 218 C - Shapes (模拟)

2023-05-16

linkkkk
题意:
给两个 n ∗ n n*n nn的矩阵, # \# #表示物体所在位置,问 1 1 1能否通过旋转 90 ° 90° 90°和平移任意次得到 2 2 2
思路:
啊大概就是暴力模拟判断一下,然后就没想好怎么模拟。
首先,如果两个矩阵的#个数不相等,一定是 N o No No
然后,旋转 90 ° 90° 90°任意次,其实只需要旋转 4 4 4次就足够了。
平移的话,对于每次旋转后的图形,找到最左上的起点,然后判断其他点和这个点问位置关系。
代码:

int n;
int s[210][210],t[210][210];
int cnts=0,cntt=0;
string ss;
int a[210][210];

void cul(){
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            a[n-i-1][j]=t[j][i];
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            t[i][j]=a[i][j];
}

PII Find(int s[210][210]){
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
    if(s[i][j]) return {i,j};
}

int main(){
    n=read;
    rep(i,0,n-1){
        cin>>ss;
        for(int j=0;j<ss.size();j++)
            if(ss[j]=='#'){
                cnts++;
                s[i][j]=1;
            }
    }
    rep(i,0,n-1){
        cin>>ss;
        for(int j=0;j<ss.size();j++)
            if(ss[j]=='#'){
                cntt++;
                t[i][j]=1;
            }
    }
    if(cnts!=cntt){
        puts("No");return 0;
    }
    for(int k=1;k<=4;k++){
        cul();
        PII first_s=Find(s);
        PII first_t=Find(t);
        int xa=first_s.first,ya=first_s.second;
        int xb=first_t.first,yb=first_t.second;
        int xc=xb-xa,yc=yb-ya;
        bool flag=1;
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++)
                if(s[i][j]==1){
                    int nx=i+xc,ny=j+yc;
                    if(nx<0||nx>=n||ny<0||ny>=n){
                        flag=0;break;
                    }
                    else{
                        if(!t[nx][ny]){
                            flag=0;break;
                        }
                    }
                }
            if(!flag) break;
        }
        if(flag){
            puts("Yes");return 0;
        }
    }
    puts("No");

    return 0;
}
/*


*/


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

AtCoder Beginner Contest 218 C - Shapes (模拟) 的相关文章

  • 使用预定义的 SVG 文件创建带有端口的自定义 JointJS 形状

    我想在 JointJS 中使用一系列预先创建的 SVG 符号 我搜索了有关使用预创建的 SVG 的信息 发现可以通过将 SVG 放入 标记 属性中来使用 SVG 创建完整的自定义元素 https groups google com foru
  • 如何在放置在不同窗格/区域的两个节点之间绘制线

    我正在尝试画一棵家谱树 在我的树中 我存储了有关前伴侣的信息 所以人的面板 区域 应该看起来像这样 Z Z Z X Y 其中Z代表前伴侣 X代表波斯人 Y代表现任妻子 丈夫 现在我想画一条线来连接当前与孩子的关系 以及与孩子的关系 图形上
  • 变换形状

    我有两点想要以特定的方式连接 请参阅第一张图片 我知道所有四个点的坐标 然后我需要将整个形状移动到坐标 0 0 并旋转它 所以主要的两个点都在 x 轴上 参见第二张图 接下来我需要 挤压 形状仅 X 轴这样最后一个点的坐标为 0 1 参见最
  • 使用形状或 9 块图像创建聊天气泡

    我正在尝试在我目前正在开发的 Android 应用程序中为我的聊天气泡创建一个模板 最终结果应该是这样的 我尝试使用 形状 但无法获得正确的多个图层 我还尝试了 9 补丁图像 但创建 9 补丁是我所能做到的 我不知道如何使用它 特别是头像
  • 我如何在Java中将形状的ArrayList拆分为分区/列表(只是建议)

    我只是想要关于如何做到这一点的建议或建议 我已经想了好几个小时了 但找不到解决方案 我的目标是将这个 ER 图转换为表格 So i have a Rectangle Entity that is linked to an ellipse A
  • 如何在Python中重塑networkx图?

    所以我创建了一种非常幼稚 可能效率低下 的生成哈斯图的方法 问题 我有 4 个维度 p q r s 我想统一显示它 超正方体 但我不知道如何重塑它 如何在 Python 中重塑 networkx 图 我见过一些人们使用的例子spring l
  • 使用 VBA 在 Excel 中选择形状

    我正在尝试使用 VBA 按名称选择形状 在我的工作表中 我有 10 个形状 名称分别为 1 到 10 并且想要一个特定的形状 由于某种原因 excel 使用我的代码选择的形状似乎不是我告诉它选择的名称的形状 据我所知 它选择的形状是随机的
  • Android L 无法绘制虚线作为可绘制背景

    Android L 无法绘制虚线作为可绘制背景 如下所示
  • 以斜线为背景的形状

    可以画一个Shape http msdn microsoft com en us library system windows shapes v VS 95 aspx其背景是由斜线构成的 一个例子Rectangle 抱歉图像质量 如果我想要
  • 如何获得概率层的形状?

    我正在使用 TensorFlow 概率层构建模型 当我做 model output shape 我收到错误 AttributeError UserRegisteredSpec object has no attribute shape 如果
  • 每个面有 K 个顶点的 3D 点的三角测量

    我正在使用 Three js 我有一个收藏3D点 x y z 和面的集合 一张脸是由K points 它可以是凸的 也可以是凹的 我在 Three js 文档中找不到任何可以帮助我的内容 一种解决方案可能是对这些形状进行三角测量 但到目前为
  • delphi中如何用鼠标移动圆圈?

    delphi中如何用鼠标移动圆圈 circle Shape 请务必使用以下命令将从控件上的 MouseMove 获得的鼠标 X Y 客户端坐标转换为父级客户端坐标 ClientToScreen and ScreenToClient 以下过程
  • 在 C# 中绘制视频

    我正在制作一个应用程序 允许用户应用某些工具来分析视频和图像 我需要帮助 了解如何在表单中加载到 Windows Media Player 的视频上实际绘制 写入并能够将其保存 它需要能够让用户徒手绘制并在其上绘制形状 提前致谢 克里斯 使
  • 如何获取 ndarray 的 x 和 y 维度 - Numpy / Python

    我想知道是否可以分别获取 ndarray 的 x 和 y 维度 我知道我可以使用ndarray shape获取表示维度的元组 但如何在 x 和 y 信息中分离它 先感谢您 您可以使用元组拆包 y x a shape
  • 2D形状识别与解析算法

    我正在寻找一种算法 用于从给定的一组 x y 点检测简单形状 如矩形 三角形 正方形和圆形 我还在寻找一种方法 一旦检测到 将路径转换为更干净的形状 我已经查遍了互联网 但没有找到任何 简单 的方法 几乎所有这些对于我的简单实现来说都是高级
  • 在运行时更改用作背景的 Drawable xml 内的形状纯色

    我有一个 Drawable xml 文件 background xml
  • 如何提高Canvas渲染性能?

    我必须画很多Shape http msdn microsoft com en us library system windows shapes shape aspx 约 1 20 万 作为 Canvas 2 的子级 我在 WPF 应用程序中
  • 如何在 XAML/WPF 中存储和检索多个形状?

    使用 XAML WPF 做一些简单的事情似乎遇到了很多问题 我已经使用矩形和椭圆形等形状创建了一些基于 XAML 的图像来创建我需要应用程序的其他部分使用的图标 但我不能似乎找到了如何做到这一点 我似乎能够在资源字典中存储画布 但无法在任何
  • 仅使用 HTML 和 CSS 制作弧形帆形状?

    是否可以仅使用 HTML 和 CSS 创建下面的弧形帆形状 我可以看到从这个答案 https stackoverflow com questions 7073484 how does this css triangle shape work
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整

随机推荐