zoukankan      html  css  js  c++  java
  • 洛谷—— P1690 贪婪的Copy

    https://www.luogu.org/problem/show?pid=1690

    题目描述

    Copy从卢牛那里听说在一片叫yz的神的领域埋藏着不少宝藏,于是Copy来到了这个被划分为个区域的神地。卢牛告诉了Copy这里共有个宝藏,分别放在第Pi个(1<=Pi<=N)区域。Copy还得知了每个区域之间的距离。现在Copy从1号区域出发,要获得所有的宝藏并到n号区域离开。Copy很懒,只好来找你为他寻找一条合适的线路,使得他走过的距离最短。

    输入输出格式

    输入格式:

    第一行一个正整数N(1<=N<=100)

    接下来一个N*N的矩阵,第i+1行第j列的数字表示区域i,j之间的距离。每个距离用空格隔开,距离保证i,j<=1000。请注意的i to j距离并不一定等于j to i的距离。

    第N+2行一个整数P(0<=P<=10)。

    第N+3行共P个用空格隔开的整数,表示有宝藏的区域编号。

    输出格式:

    一个整数,为Copy获得全部宝藏需要的最短距离。数据保证答案小于等于maxlongint。

    输入输出样例

    输入样例#1:
    样例输入1
    2
    0 4
    5 0
    2
    1 2
    
    样例输入2
    3
    0 2 6
    1 0 4
    7 10 0
    1
    2
    输出样例#1:
    样例输出1
    4
    
    样例输出1
    6

    说明

    对30%的数据,1<=n<=15,其余如题所述。

    对100%的数据,全部数据范围如题所述。

    Floyd处理出每个点的之间的距离,全排列更新每次得到宝藏的顺序,依次更新ans

     1 #include <algorithm>
     2 #include <cstdio>
     3 
     4 #define max(a,b) (a>b?a:b)
     5 #define min(a,b) (a<b?a:b)
     6 int n,m,ans,pre,dis[110][110],p[11];
     7 
     8 int Presist()
     9 {
    10     scanf("%d",&n);
    11     for(int i=1; i<=n; ++i)
    12       for(int j=1; j<=n; ++j)
    13         scanf("%d",&dis[i][j]);
    14     for(int k=1; k<=n; ++k)
    15       for(int i=1; i<=n; ++i)
    16           for(int j=1; j<=n; ++j)
    17           dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]); 
    18     scanf("%d",&m);    ans=0x7fffffff;
    19     for(int i=1; i<=m; ++i) scanf("%d",p+i);
    20     std::sort(p+1,p+m+1);
    21     do {
    22         int tmp=0;    pre=1;
    23         for(int i=1; i<=m; ++i)
    24         {
    25             tmp+=dis[pre][p[i]];
    26             pre=p[i];
    27         }
    28         tmp+=dis[pre][n];
    29         ans=min(ans,tmp);
    30     }while(std::next_permutation(p+1,p+m+1));
    31     printf("%d
    ",ans);
    32     return 0;
    33 }
    34 
    35 int Aptal=Presist();
    36 int main(int argc,char*argv[]){;}
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    一个配置引发的血案
    软件工程之学习方法篇
    开篇
    重拾《 两周自制脚本语言 》- 中文关键字与原生函数
    重拾《 两周自制脚本语言 》- 支持中文标识符
    将《 两周自制脚本语言 》测试中使用的接口中文化
    5分钟入门LingaScript-尝鲜中文版TypeScript
    为《 两周自制脚本语言 》添加中文测试代码
    2019-02-18 扩展Python控制台实现中文反馈信息之二-正则替换
    2019-02-14 1992年日本对母语编程的可读性比较实验
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7608952.html
Copyright © 2011-2022 走看看