题意:将n个由'(‘和’)’组成的字符串任意串接在一起,求从中能够取出的最长的满足括号匹配的子序列的长度。\(1 \leq n \leq 10^5 , 1 \leq |s_i| \leq 10^5 , \sum{|s_i|} \leq 5 \cdot 10^6\)。 题解:将每个串中最长的满足括号匹配的序列全部取出来,剩下的部分就是形如\(“)))(((“\)这样的形式的,即一些右括号与一些左括号组成。记每个串这样处理出来后右括号数为a(就是左半边的括号数),左括号数为b,每个串都能表示成\( (a,b) \)的形式,接下来就是要对这些串排序使结果最优。 考场上的做法基本上就是取多种排序方式求结果然后取最大值了。标算的排序做法是这样的:把串按照\(a < b\)和\( a \geq b\)分成两类,先取\( a < b\)的,在\( a < b\)这类中a小的先取,在\(a \geq b\)这类中b大的先取,然后扫一遍求出答案。大致证明一下: 考虑交换相邻位置的两个串。考虑位于i和i+1的两个串,其中\( a_i \geq b_i \)且\(…