題意:給乙個柱狀圖,包括每個矩陣的寬度和高度,求能組成的最大矩陣的面積。
思路:顯然最大矩陣的高一定為n個矩陣中的乙個矩陣的高,所以不訪用單調棧求出每個矩陣左邊、右邊第乙個高度小於該矩陣的下標。然後用樹狀陣列求出該區間的寬度和,遍歷一遍即可得到結果。演算法複雜度o(nlogn),順便吐槽這題資料,一朋友沒用單調棧暴力求區間,複雜度為o(n^2),竟然也過了。。
ac**:
#includeusingnamespace
std;
typedef
long
long
ll;const
int maxn=1000005
;int
n,p;
inth[maxn],stk[maxn],l[maxn],r[maxn];
ll tr[maxn],ans;
int lowbit(int
x)void update(int x,int
num)
}int query(int
x)
return
ans;
}int
main()
for(int i=1;i<=n;++i)
scanf("%d
",&h[i]);
h[0]=h[n+1]=0
; stk[p=0]=0
;
for(int i=1;i<=n;++i)
stk[p=0]=n+1
;
for(int i=n;i>=1;--i)
for(int i=1;i<=n;++i)
printf(
"%lld\n
",ans);
return0;
}
牛客小白月賽13 補題(ACDG)
a 通過已經給的 打表找規律,偶數輸出 1,奇數輸出1 includeusing namespace std int main void huaj ll a,ll b int main qianz 0 0 houz n 1 0 qianz 1 mp 1 houz n mp n for i 2 i n...
牛客小白月賽3 H紀年
時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld cwbc和xhrlyb在學習干支紀年法。干支紀年法是中國曆法上自古以來就一直使用的紀年方法。干支是天乾和地支的總稱。甲 乙 丙 丁 戊 己 庚 辛 壬 癸等十個符號叫天...
牛客小白月賽3 H 紀年
cwbc和xhrlyb在學習干支紀年法。干支紀年法是中國曆法上自古以來就一直使用的紀年方法。干支是天乾和地支的總稱。甲 乙 丙 丁 戊 己 庚 辛 壬 癸等十個符號叫天乾 子 醜 寅 卯 辰 巳 午 未 申 酉 戌 亥等十二個符號叫地支。為了方便程式的書寫,我們不妨將天乾記做1到10,地支記做1到1...