括號匹配算面積(模擬)

2022-06-27 03:45:12 字數 1364 閱讀 6759

作為故事主角的托公尺是一名老師。

一天,他正在為解析算術表示式的課程準備課件。 在課程的第一部分,他只想專注於解析括號。 他為他的學生發明了乙個有趣的正確括號序列的幾何表示,如下圖所示:

幾何表示的定義:

1.對於乙個括號序列a,我們定義g(a)是a的幾何表示形式,則

"()"的表示是乙個1*1的方塊,高度為1;

2.對於乙個括號序列a,"(a)"的表示是由乙個比g(a)寬2個單位高1個單位的矩形包圍g(a),它的高度為a+1;

3.對於兩個括號序列a和b,a+b的幾何表示形式為把g(b)放置在g(a)右邊的乙個單位,且高度為a和b的高度的較大值。

其中+指的是字串的連線符。

現在給你乙個合法的括號序列。 請計算顏色為黑色的區域的面積。

輸入的第一行包含乙個整數t,表示指定測試用例的數量。

每個測試用例前面都有乙個空白行。

每個測試用例由乙個合法括號序列組成。 每行只包含字元'('和')'。

對於每個測試用例,輸出一行包含乙個整數,表示相應幾何表示的黑色部分的面積。
示例1

複製

2

((()))

(())(()(()))

複製

10

20

第二個測試案例是上圖中顯示的案例。
1≤t≤10

乙個合法括號序列長度≤4 x 105

思路分析:計算乙個完整的括號序列,當遇到奇數的矩形時面積進行加,偶數則減。在高度的地方要用乙個棧去維護一下即可

**示例:

#define ll long long

const ll maxn = 4e5+5;

char s[maxn];

ll f[maxn];

ll ans = 0;

struct node

};stacksta;

void fun(ll p1, ll p2)

else

num--;}}

}int main()

ll p = 1;

for(ll i = 1; i <= len; i++)

}printf("%lld\n", ans);

}return 0;

}

括號匹配問題(棧模擬)

在某個字串 長度不超過100 中有左括號 右括號和大小寫字母 規定 與常見的算數式子一樣 任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下一行標出不能匹配的括號。不能匹配的左括號用 標註,不能匹配的右括號用 標註.輸入包括多組資...

空間面積解算

通常情況下,在地球表面的乙個小範圍區域,投影變形較小,我們用平面面積代替球面面積,兩點間的弧長等效為兩點間的距離,兩條相交的曲線間的夾角等效為兩線段間的夾角。經證明 當邊長小於200km時,橢球面上三角形的解算完全可以在平面上進行。此時,橢球面三角形與球面三角形各對應角的差異小於0.001秒,邊長差...

hdu 4915 括號匹配 巧模擬

給定乙個序列,由 組成,其中?可以表示 或者 問說有一種 多種或者不存在匹配。從左向右,優先填滿n 2個左括號,繼續填充右括號。如果過程中出現矛盾 右括號數超過左括號數 則為none,否則要判斷唯一解還是多解。之前遍歷的時候記錄恰好填滿了n 2個左括號後,第一次新增右括號的位置強行設定成左括號,問號...