无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(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ó)家法律
修文县| 大港区| 汪清县| 依兰县| 城市| 宁阳县| 高陵县| 呼伦贝尔市| 和林格尔县| 文化| 濉溪县| 潜山县| 儋州市| 西贡区| 湖北省| 黄浦区| 淄博市| 南开区| 伊川县| 大邑县| 右玉县| 武夷山市| 阿坝县| 峨山| 普陀区| 庄浪县| 阿拉善盟| 荥阳市| 田东县| 边坝县| 青龙| 新闻| 昌乐县| 新化县| 靖州| 察雅县| 互助| 定南县| 安阳市| 清流县| 浦江县|