正题

题目链接:http://www.joyoi.cn/problem/tyvj-1061


题目大意

有n个点,每个点之间都有权值不同的边,有3个机器人,有m个任务地点,机器人必须按顺序赶到任务地点,求最小代价。


解题思路

我们可以让fi,jfi,jf_{i,j}表示两个机器人在i和j,另外一个在上一个任务地点,然后动态转移就是让3个机器人任意一个去任务地点。
动态转移方程

f[i+1][x][y]=min(f[i+1][x][y],f[i][x][y]+dis[p[i]][p[i+1]]);f[i+1][x][y]=min(f[i+1][x][y],f[i][x][y]+dis[p[i]][p[i+1]]);f[i+1][x][y]=min(f[i+1][x][y],f[i][x][y]+dis[p[i]][p[i+1]]);

f[i+1][p[i]][y]=min(f[i+1][p[i]][y],f[i][x][y]+dis[x][p[i+1]]);f[i+1][p[i]][y]=min(f[i+1][p[i]][y],f[i][x][y]+dis[x][p[i+1]]);f[i+1][p[i]][y]=min(f[i+1][p[i]][y],f[i][x][y]+dis[x][p[i+1]]);

f[i+1][x][p[i]]=min(f[i+1][x][p[i]],f[i][x][y]+dis[y][p[i+1]]);f[i+1][x][p[i]]=min(f[i+1][x][p[i]],f[i][x][y]+dis[y][p[i+1]]);f[i+1][x][p[i]]=min(f[i+1][x][p[i]],f[i][x][y]+dis[y][p[i+1]]);


code

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,dis[201][201],f[2][201][201],ans,p[1001],l,r;
int main()
{scanf("%d%d",&n,&l);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d",&dis[i][j]);for(int i=1;i<=l;i++) scanf("%d",&p[i]);memset(f,127/3,sizeof(f));f[0][1][2]=0;p[0]=3;for(int i=0;i<l;i++){r^=1;//压缩数组for(int x=1;x<=n;x++)for(int y=1;y<=n;y++)f[r][x][y]=2147483647/3;for(int x=1;x<=n;x++)for(int y=1;y<=n;y++){f[r][x][y]=min(f[r][x][y],f[r^1][x][y]+dis[p[i]][p[i+1]]);f[r][p[i]][y]=min(f[r][p[i]][y],f[r^1][x][y]+dis[x][p[i+1]]);f[r][x][p[i]]=min(f[r][x][p[i]],f[r^1][x][y]+dis[y][p[i+1]]);//动态转移}}ans=2147483647;for(int x=1;x<=n;x++)for(int y=1;y<=n;y++)ans=min(ans,f[r][x][y]);//统计答案printf("%d",ans);
}

JoyOI(TYVJ)1061-Mobile Service【线性dp】相关推荐

  1. TYVJ P1061 [Mobile Service]

    很早就写过这个题目,那时候看题解写的,说白了就是抄的程序-- 这几天又拿出来看,突然发现并没有想的那么难,大神勿喷-- 用f[i,j,k]表示在第i个时刻的要求中,第一个人在j位置,第二个人在k位置时 ...

  2. CH 5102 Mobile Service(线性DP)

    CH 5102 Mobile Service \(solution:\) 这道题很容易想到DP,因为题目里已经说了要按顺序完成这些请求.所以我们可以线性DP,但是这一题的状态不是很好设,因为数据范围有 ...

  3. 【DP】Mobile Service(jzoj 1327)

    Mobile Service jzoj 1327 题目大意 某公司有三个员工,现在有n个时刻,某一时刻要一个员工到一个位置(别的员工不能动),代价为ci,jc_{i,j}ci,j​,一个位置一个时刻最 ...

  4. 0x51.动态规划 - 线性DP(习题详解 × 10)

    目录 0x51.动态规划 - 线性DP 0x51.1 LIS问题 Problem A. 登山 (最长下降子序列) Problem B. 友好城市(思维) Problem C. 最大上升子序列和 0x5 ...

  5. UVA11584 划分成回文串 Partitioning by Palindromes(线性DP划分+DP判断回文串)

    整理的算法模板合集: ACM模板 依旧是线性DP 我们使用闫氏DP分析法 总体DP转移的时间复杂度为O(n2)O(n^2)O(n2). 但是这里牵扯到判断 i\tt ii 到 j\tt jj 是否为回 ...

  6. 洛谷P2401 不等数列(线性DP)

    本题使用的是线性DP.就是DP数组难以思考,这里我直接给出 dp[i][j]:表示 1 ~ i 这 i 个数 , 其中j 个 " < " 有几种方法 假设我们已经把 n - ...

  7. CodeForces - 1096D Easy Problem(线性dp)

    题目链接:点击查看 题目大意:给出一个字符串,每个字符都有一个权值,现在需要删除权值和最少的字符,满足字符串中不再含有子序列"hard" 题目分析:线性dp,但我不会,看着题解写的 ...

  8. CodeForces - 456C Boredom(线性dp)

    题目链接:点击查看 题目大意:给出一个由n个数字组成的数列,现在给出规则是,每次选择数列中的一种数字 x,选择后的贡献为 x,不过操作后会删除掉所有数值为 x + 1 和 x - 1 的数,现在问如何 ...

  9. POJ - 1050 To the Max(最大连续子段和,线性dp)

    题目链接:点击查看 题目大意:给出一个n*n的矩阵,每个点都有一个权值,现在要从中选取一个子矩阵要求权值和最大,问这个最大权值和是多少 题目分析:因为是要求子矩阵的权值和最大的问题,我们可以直接维护一 ...

  10. 牛客 - 「火」皇家烈焰(线性dp)

    题目链接:点击查看 题目大意:给出一个字符串表示扫雷游戏,其中: 0:这个格子没有烈焰,且其左右两个格子均没有烈焰 1:这个格子没有烈焰,且其左右两个格子中只有一个烈焰 2:这个格子没有烈焰,且其左右 ...

最新文章

  1. dhtmlxgrid表格笔记
  2. 搭建属于自己的wiki
  3. 【自译】八步成为数据科学家
  4. 基于java员工管理系统设计(含源文件)
  5. Java并发包JUC的Lock锁讲解
  6. EPSON EPL-6200 无法网络共享问题
  7. nginx 各种配置
  8. 第三章 寄存器(内存访问)
  9. [USACO09FEB]改造路Revamping Trails 分层最短路 Dijkstra BZOJ 1579
  10. web打印组件康虎云报表与odoo整合示例
  11. ubuntu下安装gcc
  12. 常用的编程语言有哪些
  13. arduino继电器控制风扇_arduino控制继电器
  14. 天龙八部荣耀版体验服服务器未响应,《天龙八部荣耀版》创新竖版手游官网-合区来了!体验服合区测试解析...
  15. 【fpdlink】FPDlink接口---TI954解串器功能分析
  16. 应用计算机测定线性电阻电路图和实物图,PC817中文数据摘要_PC817引脚图和功能_工作原理_特性参数及典型应用电路...
  17. Acrel-2000Z变电站综合自动化系统
  18. TCP创建多人聊天室
  19. Android错误提示及解决方案(持续更新)
  20. 弄了一套在线教育app的源码,有兴趣的朋友可以聊聊

热门文章

  1. mysql 1117_1117Mysql prepare预处理语句
  2. java 1.8 vm_HotSpot虚拟机在java 1.8中的新实现
  3. linux tomcat8 启动慢,Linux系统下Tomcat8启动速度很慢的解决方法
  4. java 监听文件内容_java 监听文件内容变化
  5. 判断 服务器架构性能 数据,服务器架构之性能扩展-第五章(6)
  6. 三菱四节传送带控制梯形图_一文讲透FX5U PLC程序控制指令及步进梯形图编程
  7. 橡皮擦_日本推出改邪归正橡皮擦,看得我头顶一凉
  8. 763. 划分字母区间009(贪心算法+思路+详解+图示)
  9. [SpringSecurity]基本原理_过滤器加载过程
  10. C++ const修饰符的简单介绍