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

poj 3963 Evacuation Plan

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

poj 3963 Evacuation Plan

#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;bool f[4010][4010];ll dp[2][4010],INF=1e18;int n,m,ans[4010];struct node{    int x,index;};node pos1[4010],pos2[4010];bool cmp(node a,node b){    return a.x<b.x;}void dfs(int a,int b){    if(a==0)      return;    ans[pos1[a].index]=pos2[b].index;    if(f[a][b]==0)      dfs(a-1,b-1);    else      dfs(a-1,b);}int main(){    int i,j,k,a,b;    ll ret;    while(~scanf("%d",&n))    {        for(i=1;i<=n;i++)        { scanf("%I64d",&pos1[i].x); pos1[i].index=i;        }        scanf("%d",&m);        for(j=1;j<=m;j++)        { scanf("%I64d",&pos2[j].x); pos2[j].index=j;        }        sort(pos1+1,pos1+1+n,cmp);        sort(pos2+1,pos2+1+m,cmp);        for(i=0;i<=1;i++)for(j=0;j<=m;j++)dp[i][j]=INF;        dp[0][0]=0;        for(i=1;i<=n;i++)        { if(i&1)   a=0,b=1; else   a=1,b=0; dp[b][0]=INF; for(j=1;j<=m;j++) {    dp[b][j]=INF;    ret=abs(pos1[i].x-pos2[j].x);    if(dp[a][j-1]<=dp[a][j])    {        dp[b][j]=dp[a][j-1]+ret;        f[i][j]=0;    }    else    {        dp[b][j]=dp[a][j]+ret;        f[i][j]=1;    } }        }        printf("%I64dn",dp[b][m]);        dfs(n,m);        printf("%d",ans[1]);        for(i=2;i<=n;i++)printf(" %d",ans[i]);        printf("n");    }}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373891.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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