当前位置: 代码迷 >> 综合 >> luogu P5843 [SCOI2012]Blinker 的噩梦
  详细解决方案

luogu P5843 [SCOI2012]Blinker 的噩梦

热度:4   发布时间:2023-12-30 00:00:57.0

https://www.luogu.com.cn/problem/P5843

因为保证了互不相交,并且出发点和终止点也不相交,所以可以考虑建树

考虑一条与yyy轴平行的一条直线,从左往右扫,扫到一个图形左端点的时候,把它的上下的边界加进去,扫到右端点的时候把它的上下边界删掉

在加入的时候,看一下下边界往下已经加入的当中最近的是那条边界,如果是xxx的上边界,那么fa[i]=fa[x]fa[i]=fa[x]fa[i]=fa[x]他们显然是兄弟,否则xxx一定包含i,fa[i]=xi,fa[i]=xi,fa[i]=x,

建好树之后发现题目就变成了单点修改,询问路径异或和,做个树上前缀异或和,变成子树修改,单点查询,树状数组维护即可

好长啊,不想写