zoukankan      html  css  js  c++  java
  • poj 3612

    DP+简单优化,状态转移方程容易看出,优化看了http://hi.baidu.com/forverlin1204/blog/item/df9c62dc0fb16bd38d1029d8.html。哎,太粗心了,初始化时忘了得平方,看了1个多小时才发现

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 const int inf=2000000000;
     6 const int maxn=100000+10;
     7 int f[100+10],a[maxn],high[maxn],low[maxn];
     8 int n,c;
     9 int main()
    10 {
    11     while(~scanf("%d%d",&n,&c))
    12     {
    13     int i;
    14     int maxv=0;
    15     for(i=1;i<=n;i++)
    16     {
    17         scanf("%d",&a[i]);
    18         maxv=max(maxv,a[i]);
    19     }
    20     int j;
    21     for(i=0;i<a[1];i++) f[i]=inf;
    22     for(i=a[1];i<=maxv;i++) f[i]=(i-a[1])*(i-a[1]);
    23     for(i=2;i<=n;i++)
    24     {
    25         low[0]=inf;
    26         for(j=1;j<=maxv;j++)
    27             low[j]=min(f[j]-j*c,low[j-1]);
    28         high[maxv+1]=inf;
    29         for(j=maxv;j>=1;j--)
    30         {
    31             high[j]=min(f[j]+j*c,high[j+1]);
    32             f[j]=inf;
    33         }
    34         for(j=a[i];j<=maxv;j++)
    35             f[j]=min(low[j]+j*c+(j-a[i])*(j-a[i]),high[j]-j*c+(j-a[i])*(j-a[i]));
    36 
    37     }
    38     int ans=inf;
    39     for(j=a[n];j<=maxv;j++) ans=min(ans,f[j]);
    40     printf("%d\n",ans);
    41     }
    42     return 0;
    43 }
  • 相关阅读:
    CSS三大特性
    CSS选择器
    CSS(1)
    多媒体标签
    快捷键
    H5注意点(2)
    H5注意点(1)
    List详解
    求最大子串和以及其中一个子串(java)
    隧道项目
  • 原文地址:https://www.cnblogs.com/lj030/p/3131734.html
Copyright © 2011-2022 走看看