栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 3042 Grazing on the Run

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 3042 Grazing on the Run

#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<vector>#include<queue>#include<map>#include<set>#include<stack>#include<cstdlib>#define INF 100000000#define fi first#define se secondusing namespace std;typedef long long LL;typedef pair<int,int> pii;LL dp[1005][1005][2],r[1005],l[1005],a[1005],n;int main(){    int cl=0,cr=0,i,j;    LL L;    cin>>n>>L;    for(i=1;i<=n;i++)    {        scanf("%I64d",&a[i]);        if(a[i]==L) n--,i--;    }    sort(a+1,a+1+n);    for(i=1;i<=n&&a[i]<L;i++)        l[++cl]=L-a[i];    reverse(l+1,l+1+cl);    for(;i<=n;i++)        r[++cr]=a[i]-L;    //reverse(r+1,r+1+cr);    l[0]=r[0]=0;    dp[0][0][0]=dp[0][0][1]=0;    for(i=0;i<=cl;i++)        for(j=0;j<=cr;j++)        { if(i)     dp[i][j][0]=min(dp[i-1][j][0]+(l[i]-l[i-1])*(n-i-j+1),dp[i-1][j][1]+(r[j]+l[i])*(n-i-j+1)); if(j)     dp[i][j][1]=min(dp[i][j-1][1]+(r[j]-r[j-1])*(n-i-j+1),dp[i][j-1][0]+(r[j]+l[i])*(n-i-j+1)); if(i==0&&j)     dp[i][j][0]=dp[i][j][1]+r[j]*(n-i-j); if(j==0&&i)     dp[i][j][1]=dp[i][j][0]+l[i]*(n-i-j); //printf("%d")        }    cout<<min(dp[cl][cr][0],dp[cl][cr][1])<<endl;    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/366893.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号