关于线段离散化,求救。。。

P3740 [HAOI2014] 贴海报

xeonz1 @ 2018-10-20 16:58:34

for(int i=1;i<=(m<<1);i++){
    int t=p[i];
    if(p[i]>p[i-1]+1) uq[++tot]=uq[tot-1]+1;//不相邻存入间隔点
    while(p[i+1]==t) i++;//找到重复元素的最后一个
    uq[++tot]=p[i];//把点存入
}

这样离散化,线段树做法就wa了,然而wa的点不离散化直接交线段树可以过,这是什么原因啊


by 已注销%Jm9VScx @ 2018-10-20 16:59:42

一句大佬的话送给你:

这是for一个一个套都能套出来的


by 萌田薰子 @ 2018-10-20 17:01:50

我以前也被坑过........题解这样说

当出现这种情况[5,7],[1,5],[7,8]按顺序覆盖的话,就会出问题: 离散化为区间[2,3],[1,2],[3,4]那么按这样覆盖就会把第一张海报覆盖掉,但实际上第一张海报没有完全被覆盖

那该怎么办?solution:在每个离散区间中强行加一个点比如说在[1,5]加上2,[5,7]加上6,[7,8]由于是相邻的所以不要加 这样问题就解决了


by xeonz1 @ 2018-10-20 17:11:20

@一之濑琴美 我加了。。。


by xeonz1 @ 2018-10-20 17:12:13

@Forinser_666 ?????????


by 星小雨 @ 2018-10-20 17:13:18

@xeonz1 写离散线段树吧。。?


by 萌田薰子 @ 2018-10-20 17:32:28

@xeonz1 =-=那我不清楚了 反正我加2也不行


by xeonz1 @ 2018-10-20 18:38:31

@星小雨 什么是离散线段树啊,我写的是离散+线段树的啊


by xeonz1 @ 2018-10-20 18:39:08

@一之濑琴美 刚想试试加2 QAQ


by 星小雨 @ 2018-10-20 22:47:40

@xeonz1 就是动态开点


by xeonz1 @ 2018-10-20 23:41:12

@星小雨 我去学qwq


| 下一页