作為故事主角的托公尺是一名老師。一天,他正在為解析算術表示式的課程準備課件。 在課程的第一部分,他只想專注於解析括號。 他為他的學生發明了乙個有趣的正確括號序列的幾何表示,如下圖所示:
幾何表示的定義:
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複製((()))
(())(()(()))
1020
第二個測試案例是上圖中顯示的案例。1≤t≤10
乙個合法括號序列長度≤4 x 105
思路分析:計算乙個完整的括號序列,當遇到奇數的矩形時面積進行加,偶數則減。在高度的地方要用乙個棧去維護一下即可
**示例:
#define ll long longconst 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個左括號後,第一次新增右括號的位置強行設定成左括號,問號...