2017 NAIPC Problem A: Pieces of Parentheses
Difference between en1 and en2, changed 5 character(s)
The link to the problem can be seen here: http://naipc.uchicago.edu/2017/_static/naipc2017.pdf↵

Basically the problem gives a list of strings of parentheses (not necessarily valid) and asks to find the length of the longest valid string of parentheses by concatenating some of the strings from the list.↵

I was looking at the solution here: http://www.cs.ucf.edu/~dmarino/progcontests/mysols/northamerica/2017/pieces.java↵

The solution involves placing the strings into a vector and then ordering them based on _low_ (the min value of open minus closed over all intermediary characters) then _diff_ (open minus closed) then _length_. Then, DP is used to find the longest length that results when concatenating a subsequence from the vector into a valid string of parentheses.↵

What I am confused about is why the vector can be sorted that way. This seems to imply that any set of strings that form a valid string of parentheses can be rearranged in the sorting order explained above and still form a valid set of parentheses. This seems intuitive (of course you want to have a nonnegative _low_ value for the first string and you want a positive _diff_ value ↵
for more open parentheses at the beginning of the string), but why does this work?↵

If anything I said was unclear, please let me know.


 Thanks!

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en2 English arvindr9 2018-03-23 17:15:14 5 Tiny change: 't me know.\n\nThanks!' -> 't me know. Thanks!'
en1 English arvindr9 2018-03-23 03:41:22 1360 Initial revision (published)