随笔分类 -  acm-线段树

FZU 2171(线段树的延迟标记)
摘要:题意:容易理解。分析:时隔很久,再一次写了一道线段树的代码,之前线段树的题也做了不少,包括各种延迟标记,但是在组队分任务之后,我们队的线段树就交给了另外一个队友在搞,然后我就一直没去碰线段树的题了,但是我现在发现这种做法不是很好,导致我现在的思维受到了很大的局限性,所以我现在想纠正这种错误,该做的就... 阅读全文

posted @ 2014-04-28 12:21 后端bug开发工程师 阅读(732) 评论(0) 推荐(0)

hdu 3275(线段树的延迟标记,我被坑了)
摘要:题意:给你一个n(代表n个0或者1)和k(一次可以更新k个数),问把它们全部变成1至少需要多少步,如果无法实现则输出-1。思路:此题用到了贪心的思想,通过举例可以发现:从左边开始一碰到0就更新一次是最优解;然后接下来的是线段树的延迟标记,但是坑爹的是:我的数组开了100005*4一直是Runtime Error,后来改了100005*6之后才AC了,中间花费了我好多时间去查错,气死我了!!!代码实现:#include<iostream>#include<cstring>using namespace std;struct node{ int num; int flag; 阅读全文

posted @ 2013-03-04 16:55 后端bug开发工程师 阅读(648) 评论(0) 推荐(0)

hdu 3397 Sequence operation(线段树的延迟标记)
摘要:做这道题之前建议先做:hdu 3911是这道题的一部分,这是我的博客链接:http://www.cnblogs.com/jiangjing/archive/2013/01/16/2863266.html题意:首先给出一组数据:由0和1组成,然后有5种操作,0 a b表示把[a,b]区间的数全部变成0;1 a b表示把[a,b]区间的数全部变成1;2 a b表示把[a,b]区间的0变成1、1变成0,也就是进行异或操作;3 a b就是问你[a,b]区间总共有多少个1,;4 a b就是问你[a,b]区间最长的连续的1的个数。代码实现:#include<iostream>using nam 阅读全文

posted @ 2013-01-18 13:01 后端bug开发工程师 阅读(994) 评论(0) 推荐(0)

hdu 3911 Black And White(线段树的延迟标记法)
摘要:题意:就是给你一段由0和1组成的序列,然后有两种操作:0 a b就是问从a到b最长的连续的1的长度为多少,1 a b就是把从a到b的数据是一的更新为0,是零的更新为1.思路:用一个结构体,lone表示从最左边数连续1的长度,lzero表示从左边数连续0的长度,rone表示从右边数连续1的长度,rzero表示从右边数连续0的长度,tmax0表示连续最长的0的个数,tmax1表示连续最长的1的个数,flag用来做延迟标记,具体的东西见代码。代码实现:#include<iostream>using namespace std;struct node{ int lone,lzero; in 阅读全文

posted @ 2013-01-16 19:35 后端bug开发工程师 阅读(1138) 评论(0) 推荐(0)

导航