聖章 精靈使的魔法語

2021-07-06 07:44:29 字數 1570 閱讀 4070

【題目描述】

「倫福薩」【即」 ( 「】和「密西卡」【即」 ) 「】是兩種不同的精靈咒語,已知乙個成功的咒語符合如下的規定:

每乙個密西卡之前都可以對應匹配到乙個倫福薩,即為乙個合法的精靈魔法咒語。

方便的是,我們將「倫福薩」視為」 ( 「,「密西卡」視為」 ) 「,合法的精靈魔法咒語即為乙個合法的括號序列。

如:」 ( ( ( ) ) ) 「」 ( ( ) ( ) ) 「」 ( ) ( ) ( ) 「均為合法的魔法咒語,」 ) ( 「」 ( ) ) ( 「」 ( ( 「均為不合法的魔法咒語。

現在弗洛莉給我乙個長長的「倫福薩」【即」 ( 「】和「密西卡」【即」 ) 「】的片段,每次給我乙個l和r,讓我判斷需要在這個片段前最少添多少個「倫福薩」【即」 ( 「】,以及最少添多少個「密西卡」【即」 ) 「】可以成為乙個合法的魔法咒語,更令人不爽的是,弗洛莉有的時候還會把乙個「倫福薩」【即」 ( 「】變成「密西卡」【即」 ) 「】,或把乙個「密西卡」【即」 ) 「】變為「倫福薩」【即」 ( 「】。

給你乙個括號序列,可以修改,問一段區間裡面的需要新增的左括號和右括號數

修改,求區間的詢問,我們可以用線段樹維護

那麼線段樹維護什麼值呢?

我們又可以直接維護答案要求的東西:

1.這個區間裡面要加多少個左括號(即這個區間需要多少個左括號)

2.這個區間裡面要加多少個右括號(即這個區間多餘多少個左括號)

合併區間就是:

這個區間

需要的左括號=左半邊需要的左括號+max(右邊需要的左括號-左邊多餘的左括號,0)

多餘的左括號=右邊多餘的左括號+max(左邊多餘的左括號-右邊需要的左括號,0)

tree[v].l=tree[v*2].l+max(tree[v*2+1].l-tree[v*2].r,0);

tree[v].r=tree[v*2+1].r+max(tree[v*2].r-tree[v*2+1].l,0);

其他的就變得簡單了

但是還要注意的是答案的計算。

因為我們最後得到的是乙個區間的被分散的區間合在一起的答案(即find裡面),那麼我們如何合併呢?

因為線段樹的合併是有序的,那麼我們便可以用類似的合併操作(即上面)這個區間與上乙個區間合併的值再與下乙個區間合併,這樣才不會出現錯誤,才是正確的。

這就是區間求答案的過程:

ans1為需要左括號

ans2為多餘左括號

tree[v].l為需要的

tree[v].r為多餘的

void query(int v,int l,int r,int x,int y)

intmid=(l+r)>>1;

if(y<=mid) query(v*2,l,mid,x,y);

else

if(x>mid) query(v*2+1,mid+1,r,x,y);

else

}

ps:

很快就noip了,感覺自己還沒準備好。。。

加油!祝大家noip,rp++

301 302的區別 python魔法語法

重定向301 302的區別 301主要應用場景是在網域名稱跳轉。301重定向是永久的重定向,搜尋引擎在抓取新的內容的統統是也將舊的 替換為了重定向之後的 302主要應用場景 比如 未登入的使用者訪問使用者中心時重新定向到登入頁面。魔法語法 在這裡列舉取值 賦值 with的方法 物件 xx 取值,會觸...

魔法使的烟花(NOIP模擬賽Round 7)

問題描述 魔法森林裡有很多蘑菇,魔法使常常採摘它們來製作魔法藥水。為了在6月的那個奇妙的晚上用魔法綻放出最絢麗的烟花,魔法使決定對魔法森林進行一番徹底的勘探。魔法森林分為n個區域,由n 1條長度相等的道路將它們連線為了無向連通圖。每個區域都有乙個等級,這n個區域的等級滿足如下性質 1號區域的等級為1...

四聖龍神錄的程式設計教室 第24章 來製作boss吧

那麼接下來 終於要進入彈幕的製作了。首先,要製作boss的彈幕的話,就需要有個boss。boss的身體的製作的,要注意很多地方,比較麻煩,大家努力學習下吧。在這裡,稍微說點物理相關的話題吧。龍神錄裡,boss看起來都是 咻 咻 的運動的。雖然想按照 從這裡到那裡,移動這麼長的時間 這樣的指令來執行某...