摘要: 【出处】HNOI2011Day1【题目描述】给定一个长度为N的由“(”和“)”组成的字符串和M个操作。要求实现四个操作:1、统一:将[a,b]之间的所有括号改成c(“(”或“)”)2、翻转:将[a,b]之间的字符串翻转3、改变:将[a,b]之间的‘(’变成‘)’4、询问:询问[a,b]之间的字符串至少要改变多少位才能变成合法的括号序列。N,M≤100000【算法分析】此题非常巧妙,可以成功转化成类似最大连续子序列的求解方式,并运用Splay进行维护。对于一个已知的括号,我们该如何求出询问的答案?比如)((())((这样一个,我们把符合的一层层去掉,就变成了)(((,那么很显然答案是3。并且易得 阅读全文
posted @ 2011-11-24 19:25 FancyCoder0 阅读(1417) 评论(0) 推荐(1) 编辑