1002: Balanced Sequence

题意:给定n个字符串,n的大小在1e5左右,字符串的长度也是1e5,字符串仅由‘(’或‘)’组成,合法串可以不是连续的,将这n个串按照一定的顺序排列起来,使得组合之后的字符串的合法串的长度最长。n*len的大小是1e6

思路:首先n*len的处理出来每一个字符串中合法的长度,处理的办法可以参考之前栈的想法,每遇见一个')',就判断前面‘(’的个数,只要不为0,此时就可以合成一个合法串,处理完之后可以得到剩下的‘)’和‘(’的个数,然后所有的n个串进行排序,最后将这些))((())((。。。。。))(((的串连接起来即可,排序的方式是)少(多的放在前面,反之放在后面,如果差不多的话,就根据))排序。

代码如下:

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>using namespace std;const int maxn = 100005;int t;
int n;
char s[maxn];struct NODE
{int l;int r;int sum;bool operator < (const NODE &b) const{if(l>=r && b.l<=b.r)return false;else if(l<=r && b.l>=b.r)return true;else if(l>=r && b.l>=b.r)return r>=b.r;else if(l<=r && b.l<=b.r)return l<=b.l;}
} node[maxn];int main()
{scanf("%d", &t);while( t-- ){scanf("%d", &n);for(int cnt=0; cnt<n; cnt++){scanf("%s", s);int len = strlen(s);node[cnt].l = node[cnt].r = node[cnt].sum = 0;for(int i=0; i<len; i++){if(s[i] == ')'){if(node[cnt].r > 0){node[cnt].r --;node[cnt].sum ++;}else{node[cnt].l++;}}else{node[cnt].r++;}}}sort(node, node+n);int ans;int now;   ///now记录现在有多少个‘(’ans = now = 0;for(int i=0; i<n; i++){ans += node[i].sum;if(node[i].l >=now){ans += now;now = node[i].r;}else{ans += node[i].l;now -= node[i].l;now += node[i].r;}}printf("%d\n", ans*2);}return 0;
}

转载于:https://www.cnblogs.com/Flower-Z/p/9357381.html

杭电多校第一场补题-1002 Balanced Sequence相关推荐

  1. 2019年杭电多校第一场 1001题blank(DP)HDU6578

    2019年杭电多校第一场 1001题blank(DP)HDU6578 解决思路,开一个DP数组来存储0 1 2 3四个字符最后出现的位置,并且在DP中已经==排好序==. DP开四维,DP[i][j] ...

  2. 【2019多校第一场补题 / HDU6578】2019多校第一场A题1001Blank——dp

    HDU6578链接 题意 有一串字符串,仅由 {0,1,2,3}\{0, 1, 2, 3\}{0,1,2,3} 组成,长度为 nnn,同时满足 mmm 个条件.每个条件由三个整数组成:l.r.xl.r ...

  3. 2022“杭电杯”中国大学生算法设计超级联赛 (1) 杭电多校第一场 2 3 4 5 8 12

    题目 1002 Dragon slayer 标程 1003 Backpack AC代码 1004 Ball AC代码 1008 Path AC代码 1009 Laser AC代码 1012 Alice ...

  4. 杭电多校第一场第三题 Backpack(异或dp+bitset)

    问题描述 爱丽丝有一个容量背包m她现在想用一些物品填充! 爱丽丝有n项目,每个项目都有一个卷v我和值w我. 是否可以从n个项目中选择多个项目,以使背包完全装满(即体积的总和等于背包容量)?如果是这样, ...

  5. 2022杭电多校第一场

    A String 题意:求s串1-i(1 <i <n)子串的贡献,贡献为公共前后缀相交并且相交部分长度为k的倍数的数量 题解做法是用exkmp求出s串与所有后缀的LCP后,设LCP为x,那 ...

  6. 2019杭电多校第一场 Operation HDU - 6579

    题意:给出一个序列,两种操作,求区间[l,r]的区间最大异或和,和在末尾添加一个数 思路:强制在线,保存每个线性基的数值,接下去直接去搜第r个线性基,但要保持时间比l要大,新增了一个pos数组代表一个 ...

  7. HDU-6578 Blank(DP)2019暑假杭电多校第一场

    题意:一行有n个空格编号1~n; 每一个空格中填入0,1,2,3中的一个数字.且满足m个限制l,r,x:满足在区间[l,r]正好有x种不同的数字. 有多少种方法可以填充空格以满足所有条件? 思路:dp ...

  8. 2019杭电多校第一场 HDU 6599

    题解 枚举所有的回文串 注意,本质不同的回文串最多只有∣S∣|S|∣S∣个 在这些回文串中,有一些是满足要求的,我们对这些串打上标记 首先跑一个ManacherManacherManacher,然后枚 ...

  9. 2022 杭电多校 第一场

    文章目录 1011 Random 1012 Alice and Bob 1003 Backpack 1002 Dragon slayer 1009 Laser 1011 Random 签到 求一下期望 ...

  10. 2022“杭电杯”中国大学生算法设计超级联赛 (2) 杭电多校第二场

    题目 1001 Static Query on Tree AC代码 1002 C++ to Python AC代码 1003 Copy AC代码 1005 Slayers Come AC代码 1007 ...

最新文章

  1. 为什么 JavaScript 的私有属性使用 # 符号
  2. java判斷素數,算法改進 | java語言中判斷素數
  3. new vue 方法参数_vue源码解析 lt;1gt; 数据驱动
  4. hdu 4012(bfs+位压缩)
  5. 3串锂电池电量检测ic bq2060pdf及应用原理图_接受电源IC需求挑战,轻松实现精确调节的电源电压!...
  6. Exchange 2010 批量移动邮箱和增加移动请求并发数
  7. 中国移动游戏市场全球占比31.6% 掌趣科技入围竞争力企业前20
  8. Screen命令让Linux shell在后台运行
  9. 怎么将查询到的数据表传到文本区_60秒上手Treelab (二):入门数据表
  10. 深度学习4-计算图机制详解
  11. Ubuntu18如何阻止自动切换程序多个窗口的顺序
  12. 项目管理第七章项目成本管理
  13. 图表框架html,推荐14个实用的JavaScript图表(JS图表)图形绘制工具
  14. pip install XXX总是报错,例如:Exception: Traceback (most recent call last):这种错误怎么办?
  15. html阅读封面代码,封面.html
  16. javaFX学习笔记之 管理Web弹出式窗口
  17. 【汇总】ThinkPHP6入门手册
  18. Win10版本太低更新不了怎么办
  19. 重上吹麻滩——段芝堂创始人翟立冬游记
  20. 【二叉树的前序、中序、后序遍历的python写法】借助栈的实现,效率媲美递归~

热门文章

  1. Cacti auth.php,Liunx运维监控_shark巨菜_cacti篇
  2. html text-decoration,如何使用text-decoration
  3. linux dprintk 日志,linux內核調試中的printk()函數詳解
  4. 【C++】常用查找算法
  5. pro缺点和不足 一加7t_看点满满,一用难忘:一加7T上手体验全方位测评
  6. MFC CListCtrl 将一个列表的选中项添加到另一个列表
  7. 美国联邦政府2020财年网络安全预算分析:174亿美元如何分配?
  8. 前端 docker + gitlab CI 的持续集成(二)
  9. day24-XSS过滤及单实例
  10. 慕课网_《Netty入门之WebSocket初体验》学习总结