杭电多校第一场补题-1002 Balanced Sequence
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相关推荐
- 2019年杭电多校第一场 1001题blank(DP)HDU6578
2019年杭电多校第一场 1001题blank(DP)HDU6578 解决思路,开一个DP数组来存储0 1 2 3四个字符最后出现的位置,并且在DP中已经==排好序==. DP开四维,DP[i][j] ...
- 【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 ...
- 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 ...
- 杭电多校第一场第三题 Backpack(异或dp+bitset)
问题描述 爱丽丝有一个容量背包m她现在想用一些物品填充! 爱丽丝有n项目,每个项目都有一个卷v我和值w我. 是否可以从n个项目中选择多个项目,以使背包完全装满(即体积的总和等于背包容量)?如果是这样, ...
- 2022杭电多校第一场
A String 题意:求s串1-i(1 <i <n)子串的贡献,贡献为公共前后缀相交并且相交部分长度为k的倍数的数量 题解做法是用exkmp求出s串与所有后缀的LCP后,设LCP为x,那 ...
- 2019杭电多校第一场 Operation HDU - 6579
题意:给出一个序列,两种操作,求区间[l,r]的区间最大异或和,和在末尾添加一个数 思路:强制在线,保存每个线性基的数值,接下去直接去搜第r个线性基,但要保持时间比l要大,新增了一个pos数组代表一个 ...
- HDU-6578 Blank(DP)2019暑假杭电多校第一场
题意:一行有n个空格编号1~n; 每一个空格中填入0,1,2,3中的一个数字.且满足m个限制l,r,x:满足在区间[l,r]正好有x种不同的数字. 有多少种方法可以填充空格以满足所有条件? 思路:dp ...
- 2019杭电多校第一场 HDU 6599
题解 枚举所有的回文串 注意,本质不同的回文串最多只有∣S∣|S|∣S∣个 在这些回文串中,有一些是满足要求的,我们对这些串打上标记 首先跑一个ManacherManacherManacher,然后枚 ...
- 2022 杭电多校 第一场
文章目录 1011 Random 1012 Alice and Bob 1003 Backpack 1002 Dragon slayer 1009 Laser 1011 Random 签到 求一下期望 ...
- 2022“杭电杯”中国大学生算法设计超级联赛 (2) 杭电多校第二场
题目 1001 Static Query on Tree AC代码 1002 C++ to Python AC代码 1003 Copy AC代码 1005 Slayers Come AC代码 1007 ...
最新文章
- 为什么 JavaScript 的私有属性使用 # 符号
- java判斷素數,算法改進 | java語言中判斷素數
- new vue 方法参数_vue源码解析 lt;1gt; 数据驱动
- hdu 4012(bfs+位压缩)
- 3串锂电池电量检测ic bq2060pdf及应用原理图_接受电源IC需求挑战,轻松实现精确调节的电源电压!...
- Exchange 2010 批量移动邮箱和增加移动请求并发数
- 中国移动游戏市场全球占比31.6% 掌趣科技入围竞争力企业前20
- Screen命令让Linux shell在后台运行
- 怎么将查询到的数据表传到文本区_60秒上手Treelab (二):入门数据表
- 深度学习4-计算图机制详解
- Ubuntu18如何阻止自动切换程序多个窗口的顺序
- 项目管理第七章项目成本管理
- 图表框架html,推荐14个实用的JavaScript图表(JS图表)图形绘制工具
- pip install XXX总是报错,例如:Exception: Traceback (most recent call last):这种错误怎么办?
- html阅读封面代码,封面.html
- javaFX学习笔记之 管理Web弹出式窗口
- 【汇总】ThinkPHP6入门手册
- Win10版本太低更新不了怎么办
- 重上吹麻滩——段芝堂创始人翟立冬游记
- 【二叉树的前序、中序、后序遍历的python写法】借助栈的实现,效率媲美递归~
热门文章
- Cacti auth.php,Liunx运维监控_shark巨菜_cacti篇
- html text-decoration,如何使用text-decoration
- linux dprintk 日志,linux內核調試中的printk()函數詳解
- 【C++】常用查找算法
- pro缺点和不足 一加7t_看点满满,一用难忘:一加7T上手体验全方位测评
- MFC CListCtrl 将一个列表的选中项添加到另一个列表
- 美国联邦政府2020财年网络安全预算分析:174亿美元如何分配?
- 前端 docker + gitlab CI 的持续集成(二)
- day24-XSS过滤及单实例
- 慕课网_《Netty入门之WebSocket初体验》学习总结