luoguP2422 良好的感觉
Posted wlzs1432
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luoguP2422 良好的感觉相关的知识,希望对你有一定的参考价值。
luoguP2422 良好的感觉
题目描述
定义A=在a[i]~a[j]中最小值乘以总和,输出最大的A
solution
单调栈+DP。
另f[i]为当a[i]最小时能取到的最大的和。
然后就很简单了
#include<bits/stdc++.h> using namespace std; #define MAXN 100010 typedef long long ll; int n; ll a[MAXN]; ll sum[MAXN]; ll f[MAXN],t[MAXN]; int tail,head; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%lld",&a[i]),sum[i]=sum[i-1]+a[i]; a[n+1]=0; for(int i=1;i<=n+1;i++) { while(a[t[tail]]>a[i]) { f[t[tail]]+=sum[i-1]-sum[t[tail]]; tail--; } f[i]+=sum[i]-sum[t[tail]]; tail++;t[tail]=i; } ll ans=0; for(int i=1;i<=n;i++) ans=max(ans,a[i]*f[i]); cout<<ans<<endl; }
没开longlong见祖宗。。。
以上是关于luoguP2422 良好的感觉的主要内容,如果未能解决你的问题,请参考以下文章
为啥代码片段在 matplotlib 2.0.2 上运行良好,但在 matplotlib 2.1.0 上引发错误
[luoguP1879] [USACO06NOV]玉米田Corn Fields(DP)