題解:本題主要考查單調棧。
簡要題意:乙個發射站會向左邊最近的比它高的和右邊比它高的其他發射站發射能量,求接收最多能量的發射站接收的能量是多少。
1.單調棧:維護乙個單調遞增的棧,如果準備入棧的元素大於棧頂元素,那麼新元素能量加上棧頂元素能量,退棧。
**如下:
#include#include#includeusing namespace std;
stacks;
int h[666666],a[666666],ans[666666];
int n,maxn;
int main()
for(int i=1;i<=n;i++)
maxn=max(maxn,ans[i]);
cout
}
洛谷P1901 發射站(單調棧)
某地有 n 個能量發射站排成一行,每個發射站 i 都有不相同的高度 hi,並能向兩邊 當 然兩端的只能向一邊 同時發射能量值為 vi 的能量,並且發出的能量只被兩邊最近的且比 它高的發射站接收。顯然,每個發射站發來的能量有可能被 0 或 1 或 2 個其他發射站所接受,特別是為了安 全,每個發射站接...
單調棧 洛谷 P1901 發射站
某地有 n 個能量發射站排成一行,每個發射站 i 都有不相同的高度 hi,並能向兩邊 當 然兩端的只能向一邊 同時發射能量值為 vi 的能量,並且發出的能量只被兩邊最近的且比 它高的發射站接收。顯然,每個發射站發來的能量有可能被 0 或 1 或 2 個其他發射站所接受,特別是為了安 全,每個發射站接...
發射站(單調佇列)
某地有 n 個能量發射站排成一行,每個發射站 i 都有不相同的高度 h i 並能向兩邊 當然兩端的只能向一邊 同時發射能量值為 v i 的能量,並且發出的能量只被兩邊最近的且比它高的發射站接收。顯然,每個發射站發來的能量有可能被 0 或 1 或 2 個其他發射站所接受,出於安全考慮,每個發射站接收到...