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代表這是一塊腦洞。腦洞 儀修補某一塊腦洞的基本工作原理就是將另...