zoukankan      html  css  js  c++  java
  • [LSGDOJ 1505]售货员的难题 状压DP

    题目描述

    某 乡有n个村庄(1<n<15),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0<s<1000)是已知的,且A村 到B村与B村到A村的路大多不同。为了提高效率,他从商店出发到每个村庄一次,然后返回商店所在的村,假设商店所在的村庄为1,他不知道选择什么样的路线 才能使所走的路程最短。请你帮他选择一条最短的路。

    输入

    村庄数n和各村之间的路程(均是整数)。

    输出

    最短的路程。

    样例输入

    3 0 2 1 1 0 2 2 1 0

    样例输出

    3
     
    题解:
    F[i][j],j是状压后的数,是1表示经过,0表示不经过,表示从起点到i经过k1,k2,k3(k&j==1)的村庄的最小路程.
    然后就是DP方程
    F[j][k|(1<<j-1)]=max(F[i][k]+dis[i][j]) 其中(1<<i-1)&j==1  (1<<j-1)&j==0
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cmath>
     6 using namespace std;
     7 int gi(){
     8     int str=0;char ch=getchar();
     9     while(ch>'9' || ch<'0')ch=getchar();
    10     while(ch>='0' && ch<='9')str=str*10+ch-48,ch=getchar();
    11     return str;
    12 }
    13 const int N=15;
    14 int n;int dis[N][N];int F[N][1<<N];
    15 int main()
    16 {
    17     int x;
    18     n=gi();int pp=(1<<n)-1,tmp;
    19     for(int i=1;i<=n;i++)
    20     for(int j=1;j<=n;j++)
    21     dis[i][j]=gi();
    22     memset(F,127/3,sizeof(F));
    23     F[1][1]=0;
    24     for(int k=1;k<=pp;k++)
    25     {
    26         for(int i=1;i<=n;i++)
    27         {
    28             if(!((1<<i-1)&k))continue;
    29             for(int j=1;j<=n;j++)
    30             {
    31                 if(j==i || (1<<j-1)&k || !dis[i][j])continue;
    32                 tmp=F[i][k]+dis[i][j];
    33                 if(tmp<F[j][k|(1<<j-1)])F[j][k|(1<<j-1)]=tmp;
    34             }
    35         }
    36     }
    37     int ans=1999999999;
    38     for(int i=2;i<=n;i++)
    39     {
    40         if(dis[i][1]==0)continue;
    41         if(F[i][pp]+dis[i][1]<ans)ans=F[i][pp]+dis[i][1];
    42     }
    43     printf("%d",ans);
    44     return 0;
    45 }
     
  • 相关阅读:
    struts2文件上传大小限制问题
    kindeditor使用方法
    ajaxFileUpload SyntaxError: syntax error
    Attempted to lock an already-locked dir异常解决方法
    Simditor图片上传
    心理学
    Vue.JS
    SQL Server 日常维护经典应用
    12 个 JS 技巧
    Linq to js
  • 原文地址:https://www.cnblogs.com/Yuzao/p/6915873.html
Copyright © 2011-2022 走看看