五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

CSPS2019 括號(hào)樹 題解

2022-10-26 12:12 作者:限量版范兒  | 我要投稿

鏈的部分分

我們?cè)O(shè)f[i]表示以i結(jié)尾的括號(hào)序列有多少個(gè),那么i的實(shí)際答案就是f的前綴和

顯然,所有左括號(hào)和不能匹配的右括號(hào)的f均為0

對(duì)于每一個(gè)能匹配的右括號(hào)i,我們找到與之匹配的左括號(hào)p,以i結(jié)尾的括號(hào)序列就是以p-1結(jié)尾的括號(hào)序列加上p~i這段序列。所以f[i]=f[p-1]+1。

時(shí)間復(fù)雜度?\(O(n)\)?。

滿分做法

發(fā)現(xiàn)實(shí)際上一棵樹在詢問(wèn) u 節(jié)點(diǎn)時(shí)就是一條從 1 到 u 的鏈。那么我們就在dfs過(guò)程中更新括號(hào)匹配和前綴和就行

別把字符串的變量和棧的變量搞混了。最好的辦法是字符串變量大寫

void dfs(ll u) { ? ?if(a[u] == 0) sta[++ top] = u; ? ?else ? ?{ ? ? ? ?if(top) ? ? ? ?{ ? ? ? ? ? ?pei[u] = sta[top]; ? ? ? ? ? ?top --; ? ? ? ? ? ?f[u] = f[fa[pei[u]]] + 1; ? ? ? ? ? ?he += f[u]; ? ? ? ?} ? ?} ? ?ans ^= (he * u); ? ?for(auto v : e[u]) ? ?{ ? ? ? ?if(v == fa[u]) continue; ? ? ? ?dfs(v); ? ?} ? ?if(a[u] == 0) top --; ? ?else if(pei[u]) sta[++ top] = pei[u], he -= f[u]; ? ? ?return ; }

鏈接:https://www.dianjilingqu.com/585603.html

CSPS2019 括號(hào)樹 題解的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
深州市| 开封县| 静海县| 长寿区| 巴楚县| 金坛市| 天台县| 民县| 惠东县| 平昌县| 黄陵县| 怀柔区| 沁水县| 屏南县| 泰宁县| 白城市| 泰来县| 清水河县| 木兰县| 唐山市| 新和县| 吴川市| 遂昌县| 高邑县| 蒙阴县| 新巴尔虎左旗| 嘉禾县| 宁波市| 廊坊市| 石阡县| 洛宁县| 定兴县| 瓮安县| 南汇区| 抚宁县| 腾冲县| 涟水县| 太白县| 盐城市| 明溪县| 龙里县|