Codeforces Round #622 (Div. 2)C2 Skyscrapers最大"尖"性矩形,思维
Posted starve
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #622 (Div. 2)C2 Skyscrapers最大"尖"性矩形,思维相关的知识,希望对你有一定的参考价值。
题:https://codeforces.com/contest/1313/problem/C2
题意:给出n个数,分别代表第i个位置所能搭建的最大高度,问以哪一个位置的塔的高度为基准向左的每一个塔都小于等于临近右边的塔,向右每一个塔都大于等于临近的左边的塔所构建的高度之和是最大的,输出最大的高度之和;
分析:我们设一个fir[i]数组,表示当前 i 位置向左能构造的最大高度和(就想阶梯一样,i位置是阶梯的最高处),sec[i]则是向右的;
因为求出这俩个数组后,我们直接o(n)的访问fir[i]+sec[i]-a[i]找最大的既可找出能构造出最大面积和的位置;
对于这个fir[]的求法,对于位置 i ,可以利用前面已经算得的结果,假设位置 j (j<i)很明显的fir[i]=fir[j]+(i-j)*a[i],因为再i~j间的高度都是大于a[i]的,fir[i]是取不到fir[i~j]间的部分面积的,所以把i~j高度降为和 i 位置的高度一样即可贪心地求最大,sec[]求法类似
以上是关于Codeforces Round #622 (Div. 2)C2 Skyscrapers最大"尖"性矩形,思维的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #622 (Div. 2)C(单调栈,DP)
Codeforces Round #622 (Div. 2)C2
CodeForces 622D Optimal Number Permutation
Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version)(单调栈,递推)
Codeforces Round #622 (Div. 2) 题解和我的分析
Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version) 单调栈