HDU 1506 DP 最大完全子矩阵

来源:互联网 发布:战舰世界藏王数据 编辑:程序博客网 时间:2024/06/06 18:16
记录每个位置左边大于等于它的个数,和右边大于等于它的个数
#include "stdio.h"int le[100010],ri[100010];__int64 ans,x,a[100010];int main(){    int n,i;    while (scanf("%d",&n)!=EOF)    {        if (n==0) break;        for (i=1;i<=n;i++)        {            scanf("%I64d",&a[i]);            le[i]=ri[i]=i;        }        a[0]=a[n+1]=-1;        for (i=1;i<=n;i++)        {            while (a[i]<=a[le[i]-1])                le[i]=le[le[i]-1];        }        for (i=n;i>=1;i--)        {            while (a[i]<=a[ri[i]+1])                ri[i]=ri[ri[i]+1];        }        ans=0;        for (i=1;i<=n;i++)        {            x=(ri[i]-le[i]+1)*a[i];            if (x>ans) ans=x;        }        printf("%I64d\n",ans);    }    return 0;}

0 0
原创粉丝点击