輸入資料的第一行包含兩個整數n和q,分別表示括號序列的長度,以及操作的個數。 第二行包含乙個長度為n的括號序列。 接下來q行,每行三個整數t、x和y,分別表示操作的型別、操作的開始位置和操作的結 束位置,輸入資料保證x不小於y。其中t=0表示詢問操作、t=1表示反轉操作、t=2表示翻轉操 作。
對於每乙個詢問操作,輸出一行,表示將括號序列的該子串行修改為配對,所需的最少改動 個數。
6 3
)(())(
0 1 6
0 1 4
0 3 4 22
0100%的資料滿足n,q不超過10^5
。用splay維護,重點是如何維護詢問,如果我們把()這樣的去掉,那麼序列就變成了)))(((((這樣的,如果設(為1,)為-1,則區間的rmax,lmin即為所求。。
類似求最大連續子段和。
1 #include2 #include3 #include4 #include5 #include6 #include7 #includeview code8 #include9 #include10 #include11 #include
12#define inf 1000000000
13#define maxn 150000+5
14#define maxm 10000+5
15#define eps 1e-10
16#define ll long long
17#define for0(i,n) for(int i=0;i<=(n);i++)
18#define for1(i,n) for(int i=1;i<=(n);i++)
19#define for2(i,x,y) for(int i=(x);i<=(y);i++)
20#define for3(i,x,y) for(int i=(x);i>=(y);i--)
21#define for4(i,x) for(int i=head[x],y=e[i].go;i;i=e[i].next,y=e[i].go)
22using
namespace
std;
23int
read()
26while(ch>='
0'&&ch<='9')
27return x*f;28}
29int n,m,rt,c[maxn][2
],fa[maxn],li[maxn],ri[maxn];
30int
lx[maxn],rx[maxn],sum[maxn],s[maxn],v[maxn];
31int
t1,t2;
32bool
cov[maxn],rev[maxn],inv[maxn];
33void pushup(int
x)42
void rotate(int x,int &k)
50void splay(int x,int &k)
58rotate(x,k);59}
60}61void cover(int x,int
y)67
void rever(int
x)74
void invert(int
x)81
void pushdown(int
x)83
if(rev[x])
84if(inv[x])85}
86int find(int x,int
k)93
void split(int x,int
y)97
void build(int l,int r,int
f)107 build(l,mid-1,mid);build(mid+1
,r,mid);
108pushup(mid);
109}
110int
main()
121 build(1,n+2,0);rt=(1+n+2)>>1
;122
while(m--)
129return0;
130 }
BZOJ 2209 Jsoi2011 括號序列
輸入資料的第一行包含兩個整數n和q,分別表示括號序列的長度,以及操作的個數。第二行包含乙個長度為n的括號序列。接下來q行,每行三個整數t x和y,分別表示操作的型別 操作的開始位置和操作的結 束位置,輸入資料保證x不小於y。其中t 0表示詢問操作 t 1表示反轉操作 t 2表示翻轉操 作。對於每乙個...
JSOI2010 滿漢全席 2 SAT
傳送門 題目鏈結 滿漢全席 題目描述 滿漢全席是中國最豐盛的宴客菜餚,有許多種 同的材 透過滿族或是漢族的 方式,呈現在 繁多的菜色之中。由於菜色眾多而繁雜,只有極少 博學多聞技藝高超的廚師能夠做出滿漢全席,而能夠烹飪出經過專家認證的滿漢全席,也是中國廚師最大的榮譽之一。世界滿漢全席協會是由能夠 滿...
JSOI2010 滿漢全席 2 sat
做的第一道2 sat的題emmm。由題意可知,每個評委的兩個要求中,至少要滿足乙個,因此,如果有乙個不滿足,那另乙個必定要滿足 所以對於每道菜我們拆兩個點,乙個是滿族口味,乙個是漢族口味,如果我們要不滿足滿族口味,也就意味著我們要做漢族口味 所以照著每位評委的菜連邊即可 比如說乙個評委要求m1,m2...