P2422 良好的感觉

Aimee

真不知道和dp有啥关系

两个关键值,区间和和区间最小值

那么直接左右扩展一个点能作为最小值的最大区间(反正是正整数)

然后算就行了

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef  long long ll ;
const int maxn=100001;
ll sum[maxn],com[maxn];
int n;
ll Aimee;
ll find(int x){
	int l=x;
	int r=x;
	while(com[l-1]>=com[x]) l--;
	while(com[r+1]>=com[x]) r++;
	return com[x]*(sum[r]-sum[l-1]);
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;++i){
		scanf("%d",&com[i]);
		sum[i]=sum[i-1]+com[i];
	}
	for(int i=1;i<=n;++i){
		Aimee=max(Aimee,find(i));
	}
	cout<<Aimee;
	return 0;
}
posted @ 2021-02-04 08:41  Simex  阅读(99)  评论(0编辑  收藏  举报