移动服务(f[i] [j] [k],这三个人,位置为a[i],j,k的最小价值)

题意

给出点之间到达价值,使用3个人处理一个序列,f[i] [j] [k],这三个人,每次处理序列中一个值,三个人中一个要到这个点。三个人不能重复到达一个点。

思路

状态表示:f[i] [a] [b] [c]:表示:处理到第i个序列中的数,这三个人位置分别在a,b,c时的最小花费。

这个状态有三种去向:

  • a去下一个位置
  • b去下一个位置
  • c去下一个位置

像重复覆盖问题一样,拿前面的状态更新后面的状态。注意这三个点不能一样。

状态初始化的时候,我们可以定义f[0] [1] [2]=0,a[0]=3,然后下一步就走到初始位置了

代码

#include <bits/stdc++.h>
using namespace std; const int N = 210, M = 1010, INF = 0x3f3f3f3f; int n, m;
int w[N][N];
int f[M][N][N];
int p[M]; int main()
{
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
scanf("%d", &w[i][j]);
for (int i = 1; i <= m; i ++ ) scanf("%d", &p[i]); p[0] = 3;
memset(f, 0x3f, sizeof f);
f[0][1][2] = 0;
for (int i = 0; i < m; i ++ )
for (int x = 1; x <= n; x ++ )
for (int y = 1; y <= n; y ++ )
{
int z = p[i], v = f[i][x][y];
if (x == y || x == z || y == z) continue;
int u = p[i + 1];
f[i + 1][x][y] = min(f[i + 1][x][y], v + w[z][u]);
f[i + 1][z][y] = min(f[i + 1][z][y], v + w[x][u]);
f[i + 1][x][z] = min(f[i + 1][x][z], v + w[y][u]);
} int res = INF;
for (int x = 1; x <= n; x ++ )
for (int y = 1; y <= n; y ++ )
{
int z = p[m];
if (x == y || x == z || y == z) continue;
res = min(res, f[m][x][y]);
} printf("%d\n", res); return 0;
}

移动服务(f[i] [j] [k],这三个人,位置为a[i],j,k的最小价值)的更多相关文章

  1. 2017年中国大学生程序设计竞赛-中南地区赛暨第八届湘潭市大学生计算机程序设计大赛题解&源码(A.高斯消元,D,模拟,E,前缀和,F,LCS,H,Prim算法,I,胡搞,J,树状数组)

    A------------------------------------------------------------------------------------ 题目链接:http://20 ...

  2. JHipster生成微服务架构的应用栈(三)- 业务微服务示例

    本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...

  3. 数组k平移三种方法(java)

    上代码,本文用了三种方法实现,时间复杂度不一样,空间复杂度都是o(1): public class ArrayKMove { /** * 问题:数组的向左k平移,k小于数组长度 * @param ar ...

  4. spring cloud+dotnet core搭建微服务架构:Api网关(三)

    前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...

  5. spring cloud+.net core搭建微服务架构:Api网关(三)

    前言 国庆假期,一直没有时间更新. 根据群里面的同学的提问,强烈推荐大家先熟悉下spring cloud.文章下面有纯洁大神的spring cloud系列. 上一章最后说了,因为服务是不对外暴露的,所 ...

  6. hdu4106 区间k覆盖问题(连续m个数,最多选k个数) 最小费用最大流 建图巧妙

    /** 题目:hdu4106 区间k覆盖问题(连续m个数,最多选k个数) 最小费用最大流 建图巧妙 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4106 ...

  7. [Swift]LeetCode974. 和可被 K 整除的子数组 | Subarray Sums Divisible by K

    Given an array A of integers, return the number of (contiguous, non-empty) subarrays that have a sum ...

  8. [Swift]LeetCode992. K 个不同整数的子数组 | Subarrays with K Different Integers

    Given an array A of positive integers, call a (contiguous, not necessarily distinct) subarray of A g ...

  9. 室内定位系列(三)——位置指纹法的实现(KNN)

    位置指纹法中最常用的算法是k最近邻(kNN):选取与当前RSS最邻近的k个指纹的位置估计当前位置,简单直观有效.本文介绍kNN用于定位的基本原理与具体实现(matlab.python). 基本原理 位 ...

  10. 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1

    注:这里inc方法和dec方法加synchronized关键字是因为当两个线程同时操作同一个变量时,就算是简单的j++操作时,在系统底层也是通过多条机器语句来实现,所以在执行j++过程也是要耗费时间, ...

随机推荐

  1. printf函数size_t的替换字符串zu

    参考:https://stackoverflow.com/questions/2524611/how-can-one-print-a-size-t-variable-portably-using-th ...

  2. python逐行读取替换文件中的字符串

    用列表中的值逐行替换文件中符合条件的字符串,并保存为新的文件, open("file").readlines 方案1: 逐行替换并保存为新的文件 import re def rep ...

  3. Android拍照程序适配

    public void takePic(){ String forderPath = getExternalFilesDir("") + "/pic"; Fil ...

  4. unity整理

    1. hashmap实现原理 Dictionary hashtable https://www.cnblogs.com/InCerry/p/10325290.html2. malloc与new3. 循 ...

  5. R6-1 输入年份和天数,输出对应的年、月、日

    R6-1 输入年份和天数,输出对应的年.月.日 分数 15 全屏浏览题目 切换布局 作者 张泳 单位 浙大城市学院 要求定义和调用函数month_day ( year, yeardy, *****pm ...

  6. 【11】python之循环

    Python 中的循环语句有 for 和 while. 1.while 循环 Python 中 while 语句的一般形式: while 判断条件(condition): 执行语句(statement ...

  7. SpringCloud-Hoxton.SR1-config整合

    1.前一篇讲到了整合eureka和gateway,实现了服务的发现与注册以及网关的统一入口,这一篇在此基础上整合分布式配置中心config,首先新建一个子项目config-services作为服务端, ...

  8. java 动手动脑 方法重载

    如下代码://MethodOverload.java //Using overloaded methods package HJssss; public class zhuce { public st ...

  9. 腾讯云服务器,在本地域名不能访问,IP可以访问;端口访问差异:有的地方能访问有的不能

    本地域名不能访问原因是DNS地址问题,本地设置的DNS地址没法解析出腾讯云IP,所以域名访问不到,直接就用服务器IP却可以. 修改DNS可以在本地电脑上修改,只影响本机, 按下键盘上的"Wi ...

  10. LVS+keepalived实现负载均衡&高可用(原来以及部署方法)

    一.ARP技术概念介绍 为什么讲ARP技术,因为平常工作中有接触.还有就是LVS的dr模式是用到arp的技术和数据. 1.什么是ARP协议 ARP协议全程地址解析协议(AddressResolutio ...