題目鏈結
仔細理解一下題意可以發現。
對於每個完整的括號序列都是獨立的,然後就想到分治。高度是序列中所有括號序列的最大值,寬度是所有括號序列寬度和\(+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的幾何表示形式,則 的表示是乙...