zkw线段树修正 标记上升

本文介绍了作者在使用ZKW线段树时遇到的问题,包括线段树最后一层节点的误用以及区间修改和查询的错误。作者提到了区间修改和查询最大值的代码存在bug,如标记上传不完整和查询时的问题,并赞扬了ZKW线段树的标记上传和差分思想。文章最后指出,网上的ZKW线段树动态修改资源稀缺。
摘要由CSDN通过智能技术生成

恢复一下被吞的blog。。

今天才发现统计的力量很坑爹,同时发现了我写线段树的漏洞。

首先说我自己的问题,线段树最后一层的第一个节点不能用,但我以前用了而且一直没出问题,这次涉及区间修改才出现问题。

然后是统计的力量,里面关于区间修改,区间查询最大值的代码有bug,不但修改上传标记与查询回收标记一个是求最小值的,一个是最大值的,而且标记上传也不完全,查询时不能改开区间等等问题,幸亏有奥特曼的程序,否则我一直调不出。

值得一提的是,zkw这种标记上传,差分思想确实很厉害。

ps:网上几乎找不到这种zkw线段树做动态修改的rmq问题的程序

 

{$M 1000000000}
uses math;
var m1,n,ans,s,ss,m:longint;
    l,r,tail:array[1..1000000]of longint;
    t:array[0..2621440]of longint;
    next,sora:array[1..6000000]of longint;
procedure inf;
begin
 assign(input,'river.in');reset(input);
 assign(output,'river.out');rewrite(output)
end;
procedure ouf;
begin
 close(input);close(output)
end;
procedure origin;
var i:longint;
begin
 m1:=1;
 while m1<n<<1+3 do m1:=m1<<1;
 for i:=1 to n do tail[i]:=i;ss:=n
end;
procedure link(x,y:longint);
begin
 inc(ss);next[tail[x]]:=ss;tail[x]:=ss;sora[ss]:=y;
 inc(ss);next[tail[y]]:=ss;tail[y]:=ss;sora[ss]:=x
end;
procedure dfs(x,y:longint);
var i,ne:longint;
begin
 inc(s);l[x]:=s;
 i:=x;
 while next[i]<>0 do begin
  i:=next[i];ne:=sora[i];
  if 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值