hdu 2993 MAX Average Problem 動態規劃 斜率最佳化

來源:互聯網
上載者:User

做法:構造凸包即可。然後HDU的時間卡的很死,手動輸入,能用儲存位元少的資料類型就用,電腦群組成了剛說過,呵呵。。

#include<cstdio>#define LL __int64const int LMT=100005;int deq[LMT],rear,top;int sum[LMT];int get(void){    char c=getchar();    int res=0;    while(c<'0'||c>'9')c=getchar();    while(c>='0'&&c<='9')    {        res*=10;        res+=c-'0';        c=getchar();    }    return res;}int main(void){    int i,j,n,k,x;    LL help=1;    while(~scanf("%d%d",&n,&k))    {        double ans=0.0;        for(i=1;i<=n;i++)        {            x=get();            sum[i]=sum[i-1]+x;        }        rear=top=0;        deq[top++]=0;        for(i=k;i<=n;i++)        {            while(rear<top-1)            {                if(help*(sum[i]-sum[deq[rear]])*(i-deq[rear+1])<=help*(sum[i]-sum[deq[rear+1]])*(i-deq[rear]))                    rear++;                else break;            }            ans=ans>(sum[i]-sum[deq[rear]])*1.0/(i-deq[rear])?ans:(sum[i]-sum[deq[rear]])*1.0/(i-deq[rear]);            j=i-k+1;            while(rear<top-1)            {                if(help*(sum[j]-sum[deq[top-1]])*(deq[top-1]-deq[top-2])<                    help*(sum[deq[top-1]]-sum[deq[top-2]])*(j-deq[top-1]))top--;                else break;            }            deq[top++]=j;        }        printf("%.2lf\n",ans);    }    return 0;}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.