摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=2795这题咋一看和线段树没啥关系似的。其实不然,非线段树不能解也!将黑板报上每一行看做一个节点线段,黑板的宽度为其容量,这样,H行黑板就对应了H个叶子节点。H的范围为10^9,看起来很大不是吗?我们再看通知的数目n,n的数目小于等于200000,也就是说,就算每一行都放一个通知,最多也只需要200000行,可见H<=10^9,这个纯属吓人的嘛为每个线段添加一个max_left域,表示该区间的最大剩余容量,采用先序遍历树的方式,在max_left>=(通知长度) 的情况下一直向下查找,知道找到根节点 阅读全文
摘要:
http://poj.org/problem?id=2528又是一道区间染色问题,经典问题,自然有经典解法:为线段树添加一个cover域,当cover的值为-1的时候,则说明该区间是有多种颜色组成的。当cover为一个非-1的值时,说明该区间为cover一种颜色组成。更新的时候只需要将单色的区间信息向下传递即可这题唯一要做的,或许就是离散化吧。离散化就是利用数组的下标与其值一一对应的映射关系的一种hash。View Code 1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 usi 阅读全文