摘要:http://poj.org/problem?id=3667线段树,区间合并。代码: 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 #define maxn 55555 5 #define lson l,m,rt<<1 6 #define rson m+1,r,rt<<1|1 7 int msum[maxn<<2],lsum[maxn<<2],rsum[maxn<<2]; 8 int flag[maxn<<2]; 9
阅读全文
摘要:这是hh的解释:题意:在墙上贴海报,海报可以互相覆盖,问最后可以看见几张海报思路:这题数据范围很大,直接搞超时+超内存,需要离散化:离散化简单的来说就是只取我们需要的值来用,比如说区间[1000,2000],[1990,2012] 我们用不到[-∞,999][1001,1989][1991,1999][2001,2011][2013,+∞]这些值,所以我只需要1000,1990,2000,2012就够了,将其分别映射到0,1,2,3,在于复杂度就大大的降下来了所以离散化要保存所有需要用到的值,排序后,分别映射到1~n,这样复杂度就会小很多很多而这题的难点在于每个数字其实表示的是一个单位长度(并
阅读全文
摘要:http://poj.org/problem?id=3468线段树成段更新模版题。。但是这里这个惰性标记有点神奇,,看了好久才理解。。这里简单的讲下懒惰标记,懒惰标记即是要修改一个区间的时候,暂时不需要修改区间中的每个点,加一个标志代表这个区间被修改了,等到需要查询一个小区间的时候再具体修改。至于为什么要这样呢,不妨这么考虑,当更新一段区间的时候,如果没有懒惰标记,一开始如果找到的区间比要更新的区间大,那么这个大的区间里的每个点都需要修改,这样时间复杂度就是o(n)了,这跟没用线段树一样,至于单点更新为什么不需要这个呢,是因为单点更新都是更新一个点,所以不会出现更新区间这样的问题,而采用了懒惰
阅读全文
摘要:是一道裸的差分约束系统,无需建图,不等式关系已经直接给出。第一次用链接表写了SPFA,还不是很熟练。。。关于链接表还得再学习一下。。这题需要注意的是,不能用队列做,只能用栈,否则会超时。题目链接:http://poj.org/problem?id=3159 题目意思:flymouse是班里的班长,她(假设是女的哈)从老师那里拿来了一袋糖果,要发给班里的同学。好吧,flymouse与snoopy平时在班里是死对头,这下子,他(假设是男的啦)是要倒霉了。由于班里的同学都喜欢吃糖,但是每个同学都要说出一个条件,那就是A认为B同学的糖不能比他的多C,flymouse在发糖的时候要满足所有同学的要求,现
阅读全文