TYVJ P1061 [Mobile Service]
很早就写过这个题目,那时候看题解写的,说白了就是抄的程序……
这几天又拿出来看,突然发现并没有想的那么难,大神勿喷……
用f[i,j,k]表示在第i个时刻的要求中,第一个人在j位置,第二个人在k位置时的最小花费,因为第三个人一定是在上一个时刻要求的位置,所以可以去掉表示第三个人位置的那一维,用req[i]表示第i时刻要求的位置,则在第i时刻,第三个人是在req[i-1]位置上,初始化需要注意。另外,要用滚动数组,否则会MLE
关于初始化:
f[1,1,2]=c[3,req[1]]
f[1,1,3]=c[2,req[1]]
f[1,2,3]=c[1,req[1]] //c[i,j]为i移动到j的花费
其他的赋为max
仔细看看上面的初始化,其实就可以推导出状态转移方程
f[i,x1,x2]=min{f[i,x1,x2],f[i-1,x1,x2]+c[req[i-1],req[i]]}
f[i,x1,req[i-1]]=min{f[i,x1,req[i-1]],f[i-1,x1,x2]+c[x2,p[i]]}
f[i,x2,req[i-1]]=min{f[i,x2,req[i-1]],f[i-1,x1,x2]+c[x1,p[i]]}
[pascal 代码]
VARp:array[1..1000]of longint;f:array[0..1,1..200,1..200]of longint;c:array[1..200,1..200]of longint;n,m,i,j,mins:longint;
Procedure init;vari,j:longint;beginreadln(n,m);for i:=1 to n dobeginfor j:=1 to n do read(c[i,j]);readln;end;for i:=1 to m do read(p[i]);readln;fillchar(f,sizeof(f),$3f);f[1,1,2]:=c[3,p[1]];f[1,1,3]:=c[2,p[1]];f[1,2,3]:=c[1,p[1]];end;
Function min(x,y:longint):longint;beginif x<y then exit(x) else exit(y);end;
Procedure dps;varx1,x2,i:longint;beginfor i:=2 to m dobeginfor x1:=1 to n dofor x2:=1 to n dobeginf[i mod 2,x2,p[i-1]]:=min(f[i mod 2,x2,p[i-1]],f[(i-1)mod 2,x1,x2]+c[x1,p[i]]);f[i mod 2,x1,p[i-1]]:=min(f[i mod 2,x1,p[i-1]],f[(i-1)mod 2,x1,x2]+c[x2,p[i]]);f[i mod 2,x1,x2]:=min(f[i mod 2,x1,x2],f[(i-1)mod 2,x1,x2]+c[p[i-1],p[i]]);end;fillchar(f[(i+1)mod 2],sizeof(f[(i+1)mod 2]),$3f);end;end;
Begininit;dps;mins:=maxlongint;for i:=1 to n dofor j:=1 to n dobeginif f[m mod 2,i,j]<mins then mins:=f[m mod 2,i,j];if f[m mod 2,i,p[m]]<mins then mins:=f[m mod 2,i,p[m]];if f[m mod 2,p[m],i]<mins then mins:=f[m mod 2,p[m],i];end;writeln(mins);
End.
转载于:https://www.cnblogs.com/FreeDestiny/archive/2011/10/25/2223306.html
TYVJ P1061 [Mobile Service]相关推荐
- CH 5102 Mobile Service(线性DP)
CH 5102 Mobile Service \(solution:\) 这道题很容易想到DP,因为题目里已经说了要按顺序完成这些请求.所以我们可以线性DP,但是这一题的状态不是很好设,因为数据范围有 ...
- 使用SAP云平台Mobile Service开发移动应用
这是Jerry 2020年的第33篇文章,也是汪子熙公众号总共第216篇原创文章. Jerry之前的文章 SAP移动应用解决方案之一:HTML5应用 + Cordova = 平台相关的混合应用,曾经介 ...
- 【DP】Mobile Service(jzoj 1327)
Mobile Service jzoj 1327 题目大意 某公司有三个员工,现在有n个时刻,某一时刻要一个员工到一个位置(别的员工不能动),代价为ci,jc_{i,j}ci,j,一个位置一个时刻最 ...
- GMS(Google Mobile Service)
Android CTS官方网站:https://source.android.com/compatibility/cts/index.html GMS全称为Google Mobile Service, ...
- SAP Cloud Platform mobile service的使用过程
- SP703 SERVICE - Mobile Service[DP]
题意翻译 Description 一个公司有三个移动服务员.如果某个地方有一个请求,某个员工必须赶到那个地方去(那个地方没有其他员工),某一时刻只有一个员工能移动.只有被请求后,他才能移动,不允许在同 ...
- Windows Azure Mobile Services增加了对 Android的支持并扩展其适用范围至东亚地区
我们的Mobile Services使开发人员很容易地开发丰富多彩的移动应用程序.使用Mobile Services ,开发人员不仅能够连接其应用程序到 Windows Azure 上易扩展又安全的后 ...
- SAP ITS mobile 简介
一. ITSmobile简介 ITSmobile( Internet Transaction Server for Mobile)是新一代实现移动设备(如RF)应用的SAP技术,基于广泛应用Dynp ...
- 用 VC++ 2008 编写 Windows Service(系统服务)
用 VC++ 2008 编写 Windows Service(系统服务) 2008-03-30 08:08 现在许多 Windows Service 应用都可以用 c# 很好的完成,不过毕竟是托管代码 ...
最新文章
- worktools-源码下拉问题
- 【JSOI2007】动态最值 Splay
- SharePoint Framework 构建你的第一个web部件(三)
- IOS开发UI篇—导航控制器属性和基本使用
- 【转】ArcGIS Server安装
- err_cleartext_not_permitted
- input输入框历史记录清除
- 螺旋英雄谭怎么在电脑上玩 螺旋英雄谭安卓模拟器教程
- Hexo NexT主题中添加百度分享功能
- MSP430 BOR电路的作用
- raid服务器怎么装win7系统安装,安装win7系统时怎么加载SATARAID驱动
- php访问微信云数据库,第三方服务器php获取微信小程序云开发access_token和云数据库...
- 谷粉搜搜 九尾搜索 推荐
- 英文版SecureCRT显示乱码解决
- vue在创建项目时不小心选上代码校验选项(linter/ESlint)后,如何关掉?
- Linux--入门必学指令【详细拓展】
- Play framework session和flash有效范围
- quicklz php,使用quicklz缩小程序体积
- c语言设置字体时调用对话框,三、Windows通用对话框—改变字体
- 练习-Java继承和多态之接口(19)
热门文章
- mtk处理器和骁龙对比_3500元以内手机的绝杀?首款MTK 天玑1000处理器手机IQOO Z发布...
- 《SysML精粹》学习记录--第十章
- 融会贯通,从oracle...,融会贯通Oracle数据库的25条基本知识:
- c语言大地坐标系和空间直角坐标系的转换,空间直角坐标系与大地坐标系转换程序.doc...
- 【AiLearning】test3:搭建Deep Netural Network
- web前端要学哪些东西?主要做什么
- java30秒规则_每30秒运行一次cron
- 网站内容快速填充的技巧和方法
- pcb布局设计_PCB设计布局的重要提示
- 猿创征文 | Git的良心教程