RT,在考场上YY出了一种做法
虽然程序挂了()
大概就是说把括号按包含关系建树,然后对于深度相同的所有括号建一个fhq,权值为括号对的左括号权值。
因为(A)(B)->(A()B)本质上就是把一个括号和它的儿子都变成成另一个括号的儿子
没有讨厌序列的本质就是这棵树每一层都只有一个节点
x=y=1就是把权值最大的括号留在那一层,其他的都放下去
x=0,y=1也是把权值最大的括号留在那一层,其他的都放下去
x=1,y=0要判定一下是把最小括号放下去还是把次小括号放下去
然后从层数浅的向下贪心计算答案,用启发式合并合并相邻两层的fhq
总时间复杂度是O(nlogn)(要查询最小值次小值最大值查询n次,合并平均合并nlogn次)
常数貌似也不算太大()所以是正解吗()
顺带一提,首发于题目总版但是没人看于是到灌水区一发()