题意:

t组测试数据,每组数据有 n 个只由 '(' 和 ')' 构成的括号串。

要求把这 n 个串排序然后组成一个大的括号串,使得能够匹配的括号数最多。

如()()答案能够匹配的括号数是 4,(()) 也是 4。

例如:

n = 2

)

)((

你可以将其排序为))((,数目为0,也可以将其排序为)((),数目为1。

解法:

贪心。

把所有字符串中本身能够匹配的括号全部去掉,然后剩下的字符串只有三种:

1、全是 '('

2、全是 ')'

3、一串 ')' 加一串 '('

对于每一种字符串,如果 '(' 的数目多于 ‘)’,就把它放在前面,按照字符串中的 ‘)’ 从小到大排序。

         如果 ')' 的数目多于 ‘(’,就把它放在后面,按照字符串中的 ‘(’ 从大到小排序。

然后统计新串合法的括号数即可。

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;#define maxn 100000 + 1000struct Node
{int x, y;
}a[maxn];bool cmp(Node a, Node b)
{if (a.x-a.y >= 0 && b.x-b.y < 0) return true; if (a.x-a.y < 0 && b.x-b.y >= 0) return false;    // 左括号数目>右括号数目的,一定在右括号>左括号的前面  if (a.x-a.y >= 0 && b.x-b.y >= 0) return a.y < b.y;    //都是左括号比有括号多,按照右括号的数量从小到大排序if (a.x-a.y < 0 && b.x-b.y < 0) return a.x > b.x;     //都是左括号比右括号少,按照左括号的数量从大到小排序
}int main()
{int t;scanf("%d", &t);for (int ca = 1; ca <= t; ca++){int n, ans = 0;scanf("%d", &n);for (int i = 1; i <= n; i++){char s[maxn];scanf("%s", s);a[i].x = a[i].y = 0; //a[i].x 记录左括号的数量, a[i].y 记录右括号的数量。for (int j = 0; s[j] != '\0'; j++)if (s[j] == ')'){if (a[i].x) {a[i].x--; ans++;}else a[i].y++;}else a[i].x++;      //括号匹配}sort(a+1, a+1+n, cmp);int instack = 0;for (int i = 1; i <= n; i++){if (a[i].y && instack){ans += min(a[i].y, instack);instack = max(0, instack-a[i].y);}instack += a[i].x;}    //最后进行一次括号匹配,继续统计答案。printf("%d\n", ans * 2);}}

转载于:https://www.cnblogs.com/ruthank/p/9371156.html

2018 Multi-University Training Contest 1 Balanced Sequence(贪心)相关推荐

  1. Multi-University Training Contest L - Wavel Sequence

    在多校前,练练手,发现自己真的好菜. 一开始队友开了签到题,我随便一看看到了M,然后写了一个待修主席树,然后呢大概长这个样子 #include<iostream> #include< ...

  2. Sichuan University Programming Contest 2018 Preliminary

    嗯为了防止大家AK,所以这次的A题和K题我们就当做不存在好了! 经历了昨天写了两个多小时的博客没保存的心态炸裂,今天终于下了个Markdown.所以我猜这篇的格式应该会更好看一点! 好吧废话不多说 题 ...

  3. 2018 Multi-University Training Contest 3 Problem F. Grab The Tree 【YY+BFS】

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6324 Problem F. Grab The Tree Time Limit: 2000/1000 MS ...

  4. 2018 Multi-University Training Contest 4 Problem E. Matrix from Arrays 【打表+二维前缀和】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6336 Problem E. Matrix from Arrays Time Limit: 4000/20 ...

  5. 2021 HZNU Winter Training Day 17 (2018 German Collegiate Programming Contest (GCPC 18))

    2021 HZNU Winter Training Day 17 (2018 German Collegiate Programming Contest (GCPC 18)) 题目 A B C D E ...

  6. 2018 Multi-University Training Contest 7 Age of Moyu

    Age of Moyu 来追梦 Problem Description Mr.Quin love fishes so much and Mr.Quin's city has a nautical sy ...

  7. 2018 Multi-University Training Contest 1 部分简单题解析

    Preface ACM系列赛第一站,没有进前200还是很伤的. 主要是T2当时没写出来就GG了,后来看了下其实不是很难. 题目按照比赛时我们A的顺序讲,其实我都是被陈潇然大佬和ZWC带飞的. T1 M ...

  8. HUST-2015 Multi-University Training Contest 9

    2015 Multi-University Training Contest 9 solutions BY xudyh 1001.Expression 记dp_{l,r}dp​l,r​​表示l,rl, ...

  9. 2016 Multi-University Training Contest 10

    solved 7/11 2016 Multi-University Training Contest 10 题解链接 分类讨论 1001 Median(BH) 题意: 有长度为n排好序的序列,给两段子 ...

最新文章

  1. java 线程安全的原因_Java并发编程——线程安全性深层原因
  2. 【每周CV论文推荐】 初学深度学习图像分割必须要读的文章
  3. 邮件列表统计(网站推广)
  4. 【转】Beagleboard:BeagleBoneBlack
  5. 链接访问后刷新颜色回到初始_如何使链接可访问(提示:颜色不够)
  6. 【Python学习】 - sklearn - PCA降维相关
  7. jq之callback
  8. python读取mat文件报错【NotImplementedError: Please use HDF reader for matlab v7.3 files】
  9. spark 算子使用类变量_SparkCore的常用算子
  10. php新闻管理系统(简单)学习教程
  11. 各级期刊分类以及含金量//2021-2-4
  12. 小程序 用户反馈_用户反馈如何提高我的应用程序的安全性
  13. 【论文笔记】DR-TANet: Dynamic Receptive Temporal Attention Network for Street Scene Change Detection
  14. 网络游戏行业不能说的秘密
  15. 使用OpenCV实现Halcon算法(4)OpenCV实现边缘模板匹配算法
  16. 蓝桥杯实验4--按键之独立键盘(proteus仿真)
  17. c51单片机光电门测反应时间(实战小项目)
  18. GameframeWork框架—学习笔记
  19. 丘成桐中学生计算机科学竞赛,丘成桐计算机奖介绍,为什么要参加丘成桐奖?...
  20. 秋招历程——网易offer到手!

热门文章

  1. epoll的两种模式
  2. Fedora 20 安装试用体验全程讲解
  3. 在Ubuntu下设置笔记本外接显示器(双显示器)
  4. [vim]vim 插件汇总
  5. 《言简意赅之Linux设备驱动编程》 前言
  6. [react] 你知道Virtual DOM的工作原理吗?
  7. 前端学习(3259):js高级教程(3)typeof
  8. 前端学习(2548):模板解析
  9. 前端学习(2286):react之无状态组件
  10. “约见”面试官系列之常见面试题之第六十二篇之IE和兼容下写法(建议收藏)