hdu6400 矩阵问题

news/2024/11/22 22:50:57/

思路

可以先暴力打表(dfs)找规律。很多与矩阵有关的题都是可以先打表来找规律的(dls最开始就是这么干的,虽然最后失败了qaq),记得之前牛客多校上的一道无限矩阵的题最后就是用dfs打表才找到了规律...

此题主要分为3种情况(m,n为矩阵的h和w):

1.m,n皆为奇,矩阵的goodness值永远为1,只需全部用(输出即可

2.m,n为一奇一偶,矩阵的goodness为偶数边的值,稍微分类讨论一下即可。

3.m,n皆为偶,也是最复杂的一种情况。分为三种小情况:m,n的最小值为2;m,n的最小值为4;m,n为剩余情况。                                              (1)m,n当中有2,可以参照上一种情况做。                                                                                                                              (2)m,n当中有4,需要单独来讨论                                                                                                                                            (3)m,n最小值大于4,可以通过这两个例子发现规律:                                                                                                                             m=6,n=6时:                      m=8,n=8时:                                                                                                                                                       

                                                                                                                                                                                                           

自己WA的原因:                                                                                                                                                                                 1.m,n都为偶时,其最小值==4的情况要单独拿出来分析!                                                                                                     2. 在上个情况时,没有注意到())(  这种矩阵的goodness值是为1的

附上代码:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
#define rep(i,a,n) for(int i=a;i<n;i++)
int main(){int T;scanf("%d",&T);while(T--){int m,n;scanf("%d%d",&m,&n);d=n;if(m%2==1&&n%2==1){for(int i=0;i<m;i++){for(int j=0;j<n;j++)printf("(");printf("\n");}}else if(m%2==1&&n%2==0){for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(j%2==0)printf("(");elseprintf(")");}printf("\n");}}else if(m%2==0&&n%2==1){for(int i=0;i<m;i++){if(i%2==0)for(int j=0;j<n;j++)printf("(");elsefor(int j=0;j<n;j++)printf(")");printf("\n");}}else{if(m==2||n==2){if(m>n){for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(j%2==0)printf("(");elseprintf(")");}printf("\n");}}else{for(int i=0;i<m;i++){if(i%2==0)for(int j=0;j<n;j++)printf("(");elsefor(int j=0;j<n;j++)printf(")");printf("\n");}}continue;}else if(m==4||n==4){int f[210][210];swap(m,n);int p=min(m,n),q=max(m,n);if(p<=4){rep(i,0,p){rep(j,0,q/2) f[i][j]=i&1;rep(j,0,q/2) f[i][j+q/2]=(i&1)^(i!=0&&i!=p-1);}if(n<m){rep(i,0,n){rep(j,0,m) putchar(f[i][j]?')':'(');puts("");}}else{rep(i,0,n){rep(j,0,m) putchar(f[j][i]?')':'(');puts("");}}}continue;}for(int i=0;i<m;i++){if(i==0){for(int j=0;j<n;j++)printf("(");printf("\n");}else if(i==m-1){for(int j=0;j<n;j++)printf(")");printf("\n");}else if(i%2==1){for(int j=0;j<n;j++){if(j%2==0)printf("(");elseprintf(")");}printf("\n");}else if(i%2==0){for(int j=0;j<n;j++){if(j==0)printf("(");else if(j==n-1)printf(")");else if(j%2==1)printf("(");elseprintf(")");}printf("\n");}}}}return 0;
}

 

 

 


http://www.ppmy.cn/news/328238.html

相关文章

j3455文件服务器,看烦了千篇一律的J3455?让黑群晖显示真实的CPU信息

看烦了千篇一律的J3455&#xff1f;让黑群晖显示真实的CPU信息 2020-06-29 15:24:49 41点赞 381收藏 76评论 创作立场&#xff1a; 自从上车蜗牛星际以后&#xff0c;一直使用的DS918黑群系统&#xff0c;先后换了J1900、i3 8100、G5500几个CPU&#xff0c;但是群晖信息中心里显…

KMP算法——28. 找出字符串中第一个匹配项的下标

KMP算法 今天在做字符串匹配的问题的时候想起了KMP算法。真的很难理解&#xff0c;所以在这里进行一个整理。 KMP算法在字符串不匹配的时候提供了一种简单的方式&#xff0c;使得模式串不需要从头去遍历。 例如: 待匹配串s&#xff1a; aabaaf 使用i去遍历 模式串t&#xff1a…

openGauss5 企业版之yum方式安装

文章目录 1. 支持的架构和操作系统版本2. 使用限制3. 安装方式4. 使用说明 本章节主要介绍在openEuler 22.03 LTS操作系统上&#xff0c;通过yum命令一键安装openGauss数据库。 1. 支持的架构和操作系统版本 x86-64 openEuler 22.03 LTSARM64 openEuler 22.03 LTS 仅在openEu…

ArcGIS 制作3D遥感影像图

把遥感影像图加载到Arc Scene中&#xff0c;可以是landsat数据&#xff0c;也可以是哨兵数据&#xff0c;分辨率越高越好。 1&#xff1a;右键属性&#xff0c;找到图层属性里的基本高度。 2、3&#xff1a;从表面获取的高程&#xff0c;并且选择浮动在自定义表面上&#xff0…

在线绘制3D图形网站

还在为构想不出空间图形而烦恼吗&#xff1f;还在为高数的曲面积分焦虑吗&#xff1f;当你想到去搜在线绘图APP或网站时&#xff0c;说明你离摆脱烦恼更进一步了呢&#xff0c;互联网的时代为什么不用科技的方法去解决无法手工完成的任务呢。 哈哈哈&#xff0c;不卖关子了&…

Goo3D 3d图片制作网站

Goo3D 3d图片制作网站 这是一个很酷的概念至少看上去很酷&#xff0c;通过三个侧面的图片就可以合成一个3维的物体&#xff0c;不知道这个网站具体做的怎么样 但是忍不住告诉大家&#xff0c;大家或者一起用一下&#xff0c;交流交流 贴一张图片

照片转成3D效果怎么做?建议收藏这些方法

小伙伴们都有看过3D电影吗&#xff1f;它能够让电影画面具有立体效果&#xff0c;使我们观看的时候更有身临其境的感觉。其实现在随着技术的发展&#xff0c;我们也可以做到3D照片制作的操作。那你们知道如何把照片转换成3D吗&#xff1f;想要学习怎么制作3D照片的小伙伴&#…

如何画3D图

如何画出一个漂亮的3D图&#xff0c;下面是一个例子&#xff0c;可以参考这个例子进行修改&#xff1a; import pyvista as pv import numpy as np from numpy import mgrid import matplotlib.pyplot as pltxmin -800. xmax 800. Lx xmax-xmin B0 1 k 1 alpha 2.0*np.p…