线性dp之过河问题

2018-04-01 16:54:02


#include<cstdio>
#include<algorithm>
using namespace std;
int n,t[100001],opt[100001];
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    scanf("%d",&t[i]);
    sort(t+1,t+n+1);
    opt[1]=0;
    opt[2]=t[2];
    for(int i=3;i<=n;i++)
    opt[i]=min(opt[i-1]+t[1]+t[i],opt[i-2]+t[1]+t[i]+2*t[2]);
    printf("%d",opt[n]);
}