最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
望奎县| 乐业县| 东乌珠穆沁旗| 西乌珠穆沁旗| 翼城县| 嘉善县| 顺义区| 蒲城县| 湘阴县| 紫云| 五大连池市| 当阳市| 曲沃县| 盐边县| 固镇县| 伊宁县| 巴塘县| 东乌珠穆沁旗| 广水市| 神木县| 广昌县| 墨玉县| 门头沟区| 松溪县| 平昌县| 巴林左旗| 扶绥县| 大连市| 珠海市| 呼图壁县| 都昌县| 彭山县| 奇台县| 南宫市| 海宁市| 浏阳市| 得荣县| 建宁县| 南城县| 崇义县| 沁阳市|