nowcoder16450 托公尺的簡單表示法

2022-04-10 04:57:06 字數 940 閱讀 1703

題目鏈結

仔細理解一下題意可以發現。

對於每個完整的括號序列都是獨立的,然後就想到分治。高度是序列中所有括號序列的最大值,寬度是所有括號序列寬度和\(+1\)。

然後仔細想了一下,這種分治應該是可以被卡成\(n^2\)的。

題解就比較厲害了。

其實基本思想和分治相似。

建立一棵樹的模型。每到乙個左括號就給當前節點新增乙個子節點。每到乙個右括號,就回到父親節點。

等到建完這張圖,發現其實就是把分治的過程給提前處理出來了。

然後對於這棵樹\(dp\)一下就好了。

當前節點的高度是孩子中最大高度\(+1\),寬度是孩子寬度之和\(+1\),答案就是寬度\(\times\)高度\(-\)孩子的答案之和

#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

#define int ll

const int n = 500000 + 100;

vectore[n];

ll read()

while(c>='0'&&c<='9')

return x*f;

}char s[n];

int w[n],h[n];

int dfs(int u)

h[u]++;

return !u ? sum : w[u] * h[u] - sum;

}int fa[n];

signed main()

printf("%lld\n",dfs(0));

for(int i = 0;i <= tot;++i) e[i].clear();

} return 0;

}

托公尺的遊戲

題目 托公尺有一棵有根樹t tt,樹根為1 11,每輪他會在剩下的子樹中等概率乙個點 u uu,砍掉u uu的子樹 包含u uu 如果樹上的點都被砍光了,遊戲結束.求出這個遊戲進行的期望輪數,可以證明這個數一定是有理數,設他為 a b frac ba 你需要告訴他乙個整數x xx滿足 x b a m...

E 托公尺的飲料

題目鏈結 可愛的小托公尺得到了n瓶飲料.但他不小心把開蓋的工具弄丟了,所以他只能利用飲料瓶來開蓋.已知第i個瓶子的品牌為ai,且其能開啟bi品牌的瓶子.問有幾瓶飲料托公尺無法喝到.被用於開啟飲料瓶的瓶子不一定需要被開啟.乙個瓶子不能開啟其本身.輸入描述 第一行乙個整數n,表示飲料的瓶數.接下來n行,...

托公尺的簡單表示法

托公尺的簡單表示法 題目描述 作為故事主角的托公尺是一名老師。一天,他正在為解析算術表示式的課程準備課件。在課程的第一部分,他只想專注於解析括號。他為他的學生發明了乙個有趣的正確括號序列的幾何表示,如下圖所示 幾何表示的定義 1.對於乙個括號序列a,我們定義g a 是a的幾何表示形式,則 的表示是乙...