BZOJ 4592 Shoi2015 腦洞治療儀

2021-09-03 02:51:50 字數 2833 閱讀 2337

4592:[

shoi

2015]腦

洞治療儀

4592: [shoi2015]腦洞**儀

4592:[

shoi

2015

]腦洞治

療儀description

曾經發明了自動刷題機的發明家shtsc又公開了他的新發明:腦洞**儀–一種可以**他因為發明而日益增大的腦洞的神秘裝置。

為了簡單起見,我們將大腦視作乙個01序列。1代表這個位置的腦組織正常工作,0代表這是一塊腦洞。

1 0 1 0 0 0 1 1 1 0

腦洞**儀修補某一塊腦洞的基本工作原理就是將另一塊連續區域挖出,將其中正常工作的腦組織填補在這塊腦洞中。(所以腦洞**儀是腦洞的**儀?)

例如,用上面第8號位置到第10號位置去修補第1號位置到第4號位置的腦洞。我們就會得到:

1 1 1 1 0 0 1 0 0 0

如果再用第1號位置到第4號位置去修補第8號位置到第10號位置:

0 0 0 0 0 0 1 1 1 1

這是因為腦洞**儀會把多餘出來的腦組織直接扔掉。

如果再用第7號位置到第10號位置去填補第1號位置到第6號位置:

1 1 1 1 0 0 0 0 0 0

這是因為如果新腦洞挖出來的腦組織不夠多,腦洞**儀僅會盡量填補位置比較靠前的腦洞。

假定初始時shtsc並沒有腦洞,給出一些挖腦洞和腦洞**的操作序列,你需要即時回答shtsc的問題:

在大腦某個區間中最大的連續腦洞區域有多大。

input

第一行兩個整數n,m。表示shtsc的大腦可分為從1到n編號的n個連續區域。有m個操作。

以下m行每行是下列三種格式之一。

0 l r :shtsc挖了乙個從l到r的腦洞。

1 l0 r0 l1 r2 :shtsc進行了一次腦洞**,用從l0到r0的腦組織修補l1到r1的腦洞。

2 l r :shtsc詢問l到r這段區間最大的腦洞有多大。

n,m <=200000,1<=l<=r<=n

output

對於每個詢問,輸出一行乙個整數,表示詢問區間內最大連續腦洞區域有多大。

sample input

10 10

0 2 2

0 4 6

0 10 10

2 1 10

1 8 10 1 4

2 1 10

1 1 4 8 10

2 1 10

1 7 10 1 6

2 1 10

sample output33

66暴力艹正解系列

ヽ( ̄▽ ̄)ノ

這是對於01序列的區間操作

不要想別的了

珂朵莉就好了

第二種操作具體怎麼實現在**裡說

珂朵莉樹的空間複雜度是十分優秀的

因為不需要開陣列啊ヾ(๑╹◡╹)ノ"

bzoj:

雖然時間排名沒有那麼高但是空間大小是很明顯的

空間差距太大了

這是最優解第一頁(不懂rank1寫的啥子)

當然還有洛谷的:

這是開了o2加了讀優之後的

開o2會比之前快三四倍

再加上讀優還會快500ms左右

可見珂朵莉樹在理論情況下有多優秀

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define a 1000010

#define b 2010

#define iter set::iterator

using

namespace std;

struct node

bool

operator

<

(const node &a)

const};

set s;

intcalc

(iter it)

iter split

(int pos)

void

assign

(int l,

int r,

int val)

intaskmax

(int l,

int r)

void

rec(

int l,

int r,

int sum)

return;}

else lcc-

>v =

1, sum -

=calc

(lcc)

;//能用完就用}}

void

recover

(int l,

int r,

int ll,

int rr)

int n, m, opt, x, y, xx, yy;

inline

char

getchar()

template

<

class

t>

void

read

(t &x)

inline

void

write

(int x)

intmain()

}return0;

}

BZOJ4592 Shoi2015 腦洞治療儀

進行 實際上相當於用1覆蓋一段區間,這段區間內原有的1的個數加上挖出來的1的個數等於這段區間的長度,並且這段區間的長度最長為 的區間長度 知道了一段區間的長度,區間裡有多少1,還剩多少腦組織,就能知道這段區間是否被完全覆蓋 需要判斷是否還剩腦組織,如果沒了就返回,要不然複雜度不對 複雜度 o m l...

BZOJ4592 Shoi2015 腦洞治療儀

bzoj4592 吐槽一下ds y 我 這個資料 了一天我xx x!一開始看到這個題。誒,區間連續最大和誒!把腦洞的值為1,正常的賦為 i nf但是操作1怎麼辦。發現就是先統計出l0 到r0 區間內 i nf的個數to t 然後區間賦為1.然後統計l1 到r1 區間內1的個數to t 如果to t ...

BZOJ4592 Shoi2015 腦洞治療儀

bzoj4592 shoi2015 腦洞 儀 曾經發明了自動刷題機的發明家shtsc又公開了他的新發明 腦洞 儀 一種可以 他因為發明而日益增大的腦洞的神秘裝置。為了簡單起見,我們將大腦視作乙個01序列。1代表這個位置的腦組織正常工作,0代表這是一塊腦洞。腦洞 儀修補某一塊腦洞的基本工作原理就是將另...