摘要:
计算表达式。只有3种运算符:*,+,- ,*优先级高于后两者,后两者优先级相同。有两种符号:{},()。利用递归和堆栈即可解决。首先遇到左括号开始入栈直到遇到右括号,遇到右括号时对括号内的数进行计算。考虑到*优先级较高,因此遇到*直接对其左右集合进行运算。最后得到不含括号和*的表达式,从左往右计算即... 阅读全文
摘要:
并查集的高效之处在于路径压缩和延迟更新。在本题中需要额外维护子树的规模以及当前子树节点到跟的距离两个数组。由于一个新的数必然是两棵树拼接而成,对于子树规模的更新直接相加即可,对于节点到跟的距离:我们让a树的根指向b树的根,同时更新a树根到(a+b)树根(即b树根)的距离为size_of(Tree(b... 阅读全文
摘要:
此题可以先排序再用rmq递归解决。当然可以用treap。http://poj.org/problem?id=1785 1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxn = 5e4 + 10; 6 s... 阅读全文