发现很多有关区间联通问题的题线段树都可以做,不论是1列还是2列。这题的易错点在于两个端点x,y之间的可行路径不一定在区间[x,y]之间,有可能是从其他区间绕过来的,想明白这一点,区间的更新又与1列的情况基本类似,这题就很好做了。
code:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define mid (l+r)/2
#define lch i<<1,l,mid
#define rch i<<1|1,mid+1,r
using namespace std;
struct hp{
bool uuf,udf,ddf,duf,lf,rf;
bool luf,ldf,ruf,rdf;
}seg[400001];
int n;
bool t;
void updata(int i)
{
bool a,b;
seg[i].luf=seg[i<<1].luf; seg[i].ldf=seg[i<<1].ldf;
seg[i].ruf=seg[i<<1|1].ruf; seg[i].rdf=seg[i<<1|1].rdf;
a=seg[i<<1].udf&seg[i<<1|1].duf&seg[i<<1].rdf

本文探讨了利用线段树解决区间联通问题的方法,重点解释了易错点和更新逻辑,提供了代码实现。从单列到双列场景,深入浅出地介绍了这一经典数据结构的应用。
最低0.47元/天 解锁文章
239

被折叠的 条评论
为什么被折叠?



