题意是说在 h 行 w 列的矩阵中,通过设计使得尽可能多的行或列能满足题中的平衡条件。

如果行数(列数)是奇数,那么每一列(行)一定不能平衡,就要按照满足每一行(列)平衡,输出“ () “;若行数和列数同时是奇数,则设计不出任何一行或一列平衡;

当行数和列数同时为偶数时,情况是最复杂的,开始的时候只是想到两个数字谁大就去满足谁的平衡,结果完全不对,因为不只是“ ()()() ”是平衡的,像“ ((())) ”这种也是平衡的。也就是说在行满足平衡条件的同时列也可能满足平衡条件,比如:

" (((( " 就在满足每一列平衡的同时多满足了一行,然后......然后我智商就不够了。看了别人的博客才知道,可以通过“牺牲”掉最外面的一圈,也就是两行和两列,其他各行各列就都能平衡,也就是都能达到 ans = h + w - 4 ;但是在行数和列数的最小值小于 4 的时候,这种

()()     “牺牲”的做法并不是最优的,此时通过暴力的方法去枚举找到(2,2),(2,4),(4,2),(4,4)的图案即可。

)()(    这种做法是怎么想出来的呢?请移步去大佬的博客吧.......

))))

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int t,a,b;
  6. scanf("%d",&t);
  7. while(t--)
  8. {
  9. scanf("%d%d",&a,&b);
  10. if((a&)&&(b&))
  11. {
  12. for(int i = ; i < a; i++)
  13. {
  14. for(int j = ; j < b; j++)
  15. printf("(");
  16. printf("\n");
  17. }
  18. }
  19. else if((a&)&&!(b&))
  20. {
  21. for(int i = ; i < a; i++)
  22. {
  23. for(int j = ; j < b; j++)
  24. if(j&) printf(")");
  25. else printf("(");
  26. printf("\n");
  27. }
  28. }
  29. else if(!(a&)&&(b&))
  30. {
  31. for(int i = ; i < a; i++)
  32. {
  33. for(int j = ; j < b; j++)
  34. if(i&) printf(")");
  35. else printf("(");
  36. printf("\n");
  37. }
  38. }
  39. else
  40. {
  41. /* if(a > b)
  42. {
  43. for(int i = 0; i < a; i++)
  44. {
  45. for(int j = 0; j < b; j++)
  46. if(j&1) printf(")");
  47. else printf("(");
  48. printf("\n");
  49. }
  50. }
  51. else
  52. {
  53. for(int i = 0; i < a; i++)
  54. {
  55. for(int j = 0; j < b; j++)
  56. if(i&1) printf(")");
  57. else printf("(");
  58. printf("\n");
  59. }
  60. }
  61. */
  62. if(a== && b==)
  63. {
  64. puts("()");
  65. puts(")(");
  66. continue;
  67. }
  68. if(b==)
  69. {
  70. for(int i = ; i < a; i++)
  71. puts("()");
  72. continue;
  73. }
  74. if(a==)
  75. {
  76. for(int i = ; i < b; i++)
  77. printf("(");
  78. printf("\n");
  79. for(int i = ; i < b; i++)
  80. printf(")");
  81. printf("\n");
  82. continue;
  83. }
  84. if(a==)
  85. {
  86. for(int i = ; i < b; i++)
  87. printf("(");
  88. printf("\n");
  89. for(int i = ; i < b; i++)
  90. {
  91. if(i < b/)printf(")");
  92. else printf("(");
  93. }
  94. printf("\n");
  95. for(int i = ; i < b; i++)
  96. {
  97. if(i < b/)printf("(");
  98. else printf(")");
  99. }
  100. printf("\n");
  101. for(int i = ; i < b; i++)
  102. printf(")");
  103. printf("\n");
  104. continue;
  105. }
  106. if(b==)
  107. {
  108. for(int i = ; i < a; i++)
  109. {
  110. if(i < a/) puts("()()");
  111. else puts("(())");
  112. }
  113. continue;
  114. }
  115. for(int i = ; i < a; i++)
  116. {
  117. for(int j = ; j < b; j++)
  118. {
  119. if(i == || j == ) printf("(");
  120. else if(i == a- || j == b-) printf(")");
  121. else
  122. {
  123. if(j == ) printf("(");
  124. else if(j == b-) printf(")");
  125. else
  126. {
  127. if(!(i&))
  128. if(j&) printf("(");
  129. else printf(")");
  130. else
  131. if(j&) printf(")");
  132. else printf("(");
  133. }
  134. }
  135. }
  136. printf("\n");
  137. }
  138. }
  139. }
  140. return ;
  141. }

HDU 6400(括号组合 ~)的更多相关文章

  1. Leetcode22. Generate Parentheses(生成有效的括号组合)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/74937307冷血之心的博客) 题目如下:

  2. PHP美元符和花括号组合那些事—${${}}

    双美元符+{}:${${variable}}是一种比较常见的用法,但是它的实现原理是什么呢?今天来探究一下: 提及这种用法,还得先说一下PHP的String类型php.net上指出,一个字符串可以用4 ...

  3. hdu 4915 括号匹配+巧模拟

    http://acm.hdu.edu.cn/showproblem.php?pid=4915 给定一个序列,由()?组成,其中?可以表示(或者),问说有一种.多种或者不存在匹配. 从左向右,优先填满n ...

  4. LeetCode 32 Longest Valid Parentheses(最长合法的括号组合)

    题目链接: https://leetcode.com/problems/longest-valid-parentheses/?tab=Description   Problem :已知字符串s,求出其 ...

  5. HDU 1521 排列组合 指数型母函数

    排列组合 Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Status D ...

  6. Hdu 1521 排列组合

    a1 n1 a2 n2 ... ak nkn=n1+n2+...+nk从n个数中选r个排列(不是组合噢)// 指数型母函数// 模板#include <iostream> #include ...

  7. HDU 1536 S-Nim (组合游戏+SG函数)

    题意:针对Nim博弈,给定上一个集合,然后下面有 m 个询问,每个询问有 x 堆石子 ,问你每次只能从某一个堆中取出 y 个石子,并且这个 y 必须属于给定的集合,问你先手胜还是负. 析:一个很简单的 ...

  8. LeetCode 22 Generate Parentheses(找到所有匹配的括号组合)

    题目链接 : https://leetcode.com/problems/generate-parentheses/?tab=Description   给一个整数n,找到所有合法的 () pairs ...

  9. hdu 6400 Parentheses Matrix

    题目链接 Problem Description A parentheses matrix is a matrix where every element is either '(' or ')'. ...

随机推荐

  1. 【BZOJ4126】【BZOJ3516】【BZOJ3157】国王奇遇记 线性插值

    题目描述 三倍经验题. 给你\(n,m\),求 \[ \sum_{i=1}^ni^mm^i \] \(n\leq {10}^9,1\leq m\leq 500000\) 题解 当\(m=1\)时\(a ...

  2. MT【248】$f(x)=\dfrac{1}{x-1}+\dfrac{1}{x-b}$的性质

    探讨函数$f(x)=\dfrac{1}{x-a}+\dfrac{1}{x-b}$其中$a<b$的几个性质 分析:对称性:关于$(\dfrac{a+b}{2},0)$证明提示:$f(x)+f(a+ ...

  3. Apache 开启压缩传输

    在 /etc/httpd/conf/httpd.conf 中添加如下配置: # Enable gzip - by Jerryhuang # <IfModule mod_deflate.c> ...

  4. FWT模板(洛谷P4717 【模板】快速沃尔什变换)(FWT)

    洛谷题目传送门 只是一个经过了蛇皮压行的模板... 总结?%%%yyb%%% #include<bits/stdc++.h> #define LL long long #define RG ...

  5. Educational Codeforces Round 33 (Rated for Div. 2) F. Subtree Minimum Query(主席树合并)

    题意 给定一棵 \(n\) 个点的带点权树,以 \(1\) 为根, \(m\) 次询问,每次询问给出两个值 \(p, k\) ,求以下值: \(p\) 的子树中距离 \(p \le k\) 的所有点权 ...

  6. Dynamic CRM 2015学习笔记(5)CRM 2015 导入 OData Query Designer 解决方案

    以前一直使用OData Query Designer来生成.验证odata查询字符串,本想把它导入到CRM 2015的环境里,但报错: 到MSDN上发现太老版本的solution确实不能再导入到crm ...

  7. mysql 单表卡死

    由于单表数据量过大导致的更新操作处于卡死状态,无法打开也无法修改. 此时需要命令行模式连接数据库,注意点:此处连接需要相同的账号 1. $ SHOW PROCESSLIST; 2. $ kill 37 ...

  8. CF1106E Lunar New Year and Red Envelopes

    比赛时看到这题懵逼了,比完赛仔细一想是个很简单的dp = = 由于题目限制,可以发现\(B\)取红包的策略是唯一的,可以用优先队列预处理出\(B\)在第\(i\)秒可以拿到的红包的收益\(w_i\)和 ...

  9. A/D和D/A的学习

    从我们学到的知识了解到,我们的单片机是一个典型的数字系统.数字系统只能对输入的数字信号进行处理,其输出信号也是数字信号.但是在工业检测系统和日常生活中的许多物理量都是模拟量,比如温度.长度.压力.速度 ...

  10. WIndows下将文件夹映射为磁盘

    subst 盘符 文件夹路径 [/d] 映射 将e:\work映射为z:盘,使用subst z: e:\work 取消映射 取消z盘映射,使用subst z: /d 参考资料:http://mp.we ...