HDU 6400 Parentheses Matrix(构造)

news/2024/11/22 18:34:55/

 题意:给你r,c求一个矩阵让它的行和列的匹配度最大,匹配就要一行一列全都匹配

  每个位置只能是左括号或者右括号, “()”这算一个匹配,那么“(())”,“()()”也是匹配的。

题解:当r,c都为奇数时,不可能匹配;

当r或c为奇数时,答案就是r,c

难的是r和c都是偶数,遇事不决先打表。

想一想,第一行要匹配要一半的左括号,一般的右括号,(((()))),像这样,第一行有右括号该列就无法匹配了

就很浪费,那么第一行就全是(((((((((,同理第一列也全都是((((((((,然后吧,最后一列是))))))

最后一行除了第一列都是))))))))))))))

然后就是中间的,打表或者自己画找找规律什么的,发现行或者列有一个小于等于4第一行有(()),就不会很浪费

就算特殊情况,然后构造。

比如4 16

((((((((((((((((
           ))))))))((((((((
           (((((((())))))))
           ))))))))))))))))

这样排列就多赚了第三行,但是往后如果行列没有小于4的,就还是按照上面的处理

比如这个最多是16,(比赛真是服了一群14wa,14wa,14wa,然后最后几分钟浙大宁波学院的一哥们?说是16我还没信,emmmmm)

10 10
((((((((((
()()()()()
(()()()())
()()()()()
(()()()())
()()()()()
(()()()())
()()()()()
(()()()())
()))))))))

 

#include<bits/stdc++.h>
using namespace std;
int main()
{int t;scanf("%d",&t);while(t--){int r,c;scanf("%d %d",&r,&c);if((r&1)&&(c&1))//都是奇数随便输出 {for(int i=0;i<r;i++)for(int j=0;j<c;j++){printf("(");if(j==c-1)printf("\n");}}else if((r&1))//行为奇数,答案为行数 {for(int i=0;i<r;i++)for(int j=1;j<=c/2;j++){printf("()");if(j==c/2)printf("\n");}}else if((c&1)){for(int i=1;i<=r;i++)for(int j=0;j<c;j++){if((i&1)){printf("(");}else printf(")");if(j==c-1)printf("\n");}}else {int p=min(r,c),q=max(r,c);if(p<=4)     	{if(r<c)//r<c有小于4的 {for(int i=1;i<=r;i++)for(int j=1;j<=c;j++){if(i==1)printf("(");else if(i==r)printf(")");else {if((i&1)){if(j<=c/2)printf("(");else printf(")");}else {if(j<=c/2)printf(")");else printf("(");}}if(j==c)printf("\n");} }else//c>=r r小于等于4 {for(int i=1;i<=r;i++)for(int j=1;j<=c;j++){if(i<=r/2){if(j<=c/2)printf("(");else printf(")");if(j==c)printf("\n");}else {if((j&1))printf("(");else printf(")");if(j==c)printf("\n");}}}}else//都为偶数没有小于4的 {for(int i=0;i<r;i++)for(int j=0;j<c;j++){if(i==0||j==0)printf("(");else if(i==r-1||j==c-1)printf(")");else if(((i+j)&1))printf("(");else printf(")");if(j==c-1)printf("\n");}}	}}return 0;
}

 


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

相关文章

HDU 6400(费马小定理)

传送门 题面&#xff1a; Freshmen frequently make an error in computing the power of a sum of real numbers, which usually origins from an incorrect equation (mn)pmpnp, where m,n,p are real numbers. Lets call it Beginners Dream. For instance, (14)25225, but…

红米Note8首发,6400万+联发科G90T,能否再续Note7的辉煌

红米Note8首发&#xff0c;6400万联发科G90T&#xff0c;能否再续Note7的辉煌 如果小编问大家&#xff0c;觉得哪一个品牌的手机性价比高&#xff0c;我想应该会有很多人回答小编说是小米&#xff0c;那么谁是"性价比之王"呢&#xff1f;那么这些选择小米的朋友们肯…

Netgear R6400v2 堆溢出漏洞分析与利用

2020 年 6 月&#xff0c;ZDI发布了一个关于Netgear R6700型号设备上堆溢出漏洞的安全公告&#xff0c;随后又发布了一篇关于该漏洞的博客&#xff0c;其中对该漏洞进行了详细分析&#xff0c;并给出了完整的漏洞利用代码。该漏洞存在于对应设备的httpd组件中&#xff0c;在处理…

hdu 6400 Parentheses Matrix

题目&#xff1a;点击打开链接 题意&#xff1a; 给一个只含(和)的矩阵&#xff0c;只考虑从行和列上的括号序列&#xff0c;构造一个矩阵使得合法括号序列的总数最多。 分析&#xff1a;构造&#xff0c;分类讨论。首先奇数行或奇数列内是不存在合法括号序列的&#xff0c;所…

hdu6400 矩阵问题

思路 可以先暴力打表(dfs)找规律。很多与矩阵有关的题都是可以先打表来找规律的&#xff08;dls最开始就是这么干的&#xff0c;虽然最后失败了qaq&#xff09;&#xff0c;记得之前牛客多校上的一道无限矩阵的题最后就是用dfs打表才找到了规律... 此题主要分为3种情况&#…

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…