zoukankan      html  css  js  c++  java
  • (状压dp)codevs2800 送外卖

    2800 送外卖

     

    时间限制: 2 s
    空间限制: 256000 KB
    题目等级 : 钻石 Diamond

    测试通过 Accepted

     
    总耗时: 201 ms
    0 / 0 数据通过测试.
    最近的错误点信息
                                
    运行结果
     
    测试点#1.in  结果:    内存使用量:  256kB     时间使用量:  1ms     
    测试点#10.in 结果: 内存使用量: 5356kB 时间使用量: 29ms
    测试点#2.in 结果: 内存使用量: 256kB 时间使用量: 0ms
    测试点#3.in 结果: 内存使用量: 2796kB 时间使用量: 9ms
    测试点#4.in 结果: 内存使用量: 5352kB 时间使用量: 30ms
    测试点#5.in 结果: 内存使用量: 5356kB 时间使用量: 29ms
    测试点#6.in 结果: 内存使用量: 5356kB 时间使用量: 24ms
    测试点#7.in 结果: 内存使用量: 5356kB 时间使用量: 29ms
    测试点#8.in 结果: 内存使用量: 5356kB 时间使用量: 25ms
    测试点#9.in 结果: 内存使用量: 5356kB 时间使用量: 25ms
    错误error
     
    测试点#1.in  结果:    内存使用量:  256kB     时间使用量:  1ms     
    测试点#10.in 结果: 内存使用量: 5356kB 时间使用量: 29ms
    测试点#2.in 结果: 内存使用量: 256kB 时间使用量: 0ms
    测试点#3.in 结果: 内存使用量: 2796kB 时间使用量: 9ms
    测试点#4.in 结果: 内存使用量: 5352kB 时间使用量: 30ms
    测试点#5.in 结果: 内存使用量: 5356kB 时间使用量: 29ms
    测试点#6.in 结果: 内存使用量: 5356kB 时间使用量: 24ms
    测试点#7.in 结果: 内存使用量: 5356kB 时间使用量: 29ms
    测试点#8.in 结果: 内存使用量: 5356kB 时间使用量: 25ms
    测试点#9.in 结果: 内存使用量: 5356kB 时间使用量: 25ms
    错误信息
     
    测试点#1.in  结果:    内存使用量:  256kB     时间使用量:  1ms     
    测试点#10.in 结果: 内存使用量: 5356kB 时间使用量: 29ms
    测试点#2.in 结果: 内存使用量: 256kB 时间使用量: 0ms
    测试点#3.in 结果: 内存使用量: 2796kB 时间使用量: 9ms
    测试点#4.in 结果: 内存使用量: 5352kB 时间使用量: 30ms
    测试点#5.in 结果: 内存使用量: 5356kB 时间使用量: 29ms
    测试点#6.in 结果: 内存使用量: 5356kB 时间使用量: 24ms
    测试点#7.in 结果: 内存使用量: 5356kB 时间使用量: 29ms
    测试点#8.in 结果: 内存使用量: 5356kB 时间使用量: 25ms
    测试点#9.in 结果: 内存使用量: 5356kB 时间使用量: 25ms
     
    题目描述 Description

    有一个送外卖的,他手上有n份订单,他要把n份东西,分别送达n个不同的客户的手上。n个不同的客户分别在1~n个编号的城市中。送外卖的从0号城市出发,然后n个城市都要走一次(一个城市可以走多次),最后还要回到0点(他的单位),请问最短时间是多少。现在已知任意两个城市的直接通路的时间。

    输入描述 Input Description

    第一行一个正整数n (1<=n<=15)

    接下来是一个(n+1)*(n+1)的矩阵,矩阵中的数均为不超过10000的正整数。矩阵的i行j列表示第i-1号城市和j-1号城市之间直接通路的时间。当然城市a到城市b的直接通路时间和城市b到城市a的直接通路时间不一定相同,也就是说道路都是单向的。

    输出描述 Output Description

    一个正整数表示最少花费的时间

    样例输入 Sample Input
    3
    0 1 10 10
    1 0 1 2
    10 1 0 10
    10 2 10 0
    样例输出 Sample Output

    8

    数据范围及提示 Data Size & Hint

    1<=n<=15

    先跑一遍floyd求最短路。dp[i][j]表示当下在j位置,状态为i的走过的最少距离。

     1 #include <iostream>
     2 #include <string>
     3 #include <algorithm>
     4 #include <cstring>
     5 #include <cstdio>
     6 #include <cmath>
     7 #include <queue>
     8 #include <set>
     9 #include <map>
    10 #include <list>
    11 #include <vector>
    12 #include <stack>
    13 #define mp make_pair
    14 //#define P make_pair
    15 #define MIN(a,b) (a>b?b:a)
    16 //#define MAX(a,b) (a>b?a:b)
    17 typedef long long ll;
    18 typedef unsigned long long ull;
    19 const int MAX=(1<<16)+5;
    20 const int MAX_V=25;
    21 const int INF=2e9+5;
    22 const double M=4e18;
    23 using namespace std;
    24 const int MOD=1e9+7;
    25 typedef pair<ll,int> pii;
    26 const double eps=0.000000001;
    27 #define rank rankk
    28 int d[MAX_V][MAX_V];//d[u][v]表示边e=(u,v)的权值(不存在时设为INF,不过d[i][i]=0
    29 int V;//顶点数
    30 int dp[MAX][20];
    31 void warshall_floyd()
    32 {
    33     for(int k=0;k<V;k++)
    34         for(int i=0;i<V;i++)
    35             for(int j=0;j<V;j++)
    36                 d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
    37 }
    38 int main()
    39 {
    40     scanf("%d",&V);
    41     ++V;
    42     for(int i=0;i<V;i++)
    43         for(int j=0;j<V;j++)
    44             scanf("%d",&d[i][j]);
    45     warshall_floyd();
    46     for(int i=0;i<(1<<V);i++)
    47         fill(dp[i],dp[i]+V,INF);
    48     dp[0][0]=0;
    49     for(int i=0;i<(1<<V);i++)
    50         for(int j=0;j<V;j++)
    51             if(!((i>>j)&1))
    52             {
    53                 for(int q=0;q<V;q++)
    54                     dp[i|(1<<j)][j]=min(dp[i|(1<<j)][j],dp[i][q]+d[q][j]);
    55             }
    56     int da=(1<<V)-1,an=INF;
    57     for(int i=0;i<V;i++)
    58         an=min(an,dp[da][i]+d[i][0]);
    59     printf("%d
    ",an);
    60 }
  • 相关阅读:
    python(7)-pycharm mac和windows专业版安装破解
    Navicat Premium15激活 安装与激活(转载) 有效!!
    PHP 冒泡排序
    PHP 插入排序 -- 希尔排序
    PHP 插入排序 -- 折半查找
    PHP 插入排序 -- 直接插入排序
    PHP 哈夫曼的实现
    PHP call_user_func的一些用法和注意点
    PHP 组件注册的例子
    PHP 奇葩的debug_zval_dump的输出
  • 原文地址:https://www.cnblogs.com/quintessence/p/6957639.html
Copyright © 2011-2022 走看看