SPOJ 703 SERVICE - Mobile Service 题解
好题啊!~
设f[i][j][k][l]表示已经处理完前i个请求后,a在j,b在k,c在l的最小值是多少;
那么f[i][p[i]][k][l]=min(f[i][p[i]][k][l],f[i-1][j][k][l]+c(j,p[i]));
f[i][j][p[i]][l]=min(f[i][j][p[i]][l],f[i-1][j][k][l]+c(k,p[i]));
f[i][j][k][p[i]]=min(f[i][j][k][p[i]],f[i-1][j][k][l]+c(l,p[i]));
但以上的复杂度卡死你都过不去,所以优化状态;
因为对于i,肯定有一个人处于p[i];所以把p[i]舍弃
f[i+1][j][k]=min(f[i+1][j][k],f[i][j][k]+a[p[i]][p[i+1]]);
f[i+1][p[i]][k]=min(f[i+1][p[i]][k],f[i][j][k]+a[j][p[i+1]]);
f[i+1][j][p[i]]=min(f[i+1][j][p[i]],f[i][j][k]+a[k][p[i+1]]);
注意p[0]=3;
f[0][1][2]=0;
#include <bits/stdc++.h>
using namespace std;
int a[][];
int f[][][];
int p[];
int main()
{
int t;
cin>>t;
while(t--){
int l,n;
cin>>l>>n;
for(register int i=;i<=l;i++){
for(register int j=;j<=l;j++){
scanf("%d",&a[i][j]);
}
}
for(int i=;i<=n;i++){
scanf("%d",&p[i]);
}
memset(f,0x3f,sizeof(f));
f[][][]=;
p[]=;
for(register int i=;i<n;i++){
for(register int j=;j<=l;j++){
for(register int k=;k<=l;k++){
if(j==p[i]) continue;
if(k==p[i]) continue;
if(j==k) continue;
if(j!=p[i+]&&k!=p[i+]) f[i+][j][k]=min(f[i+][j][k],f[i][j][k]+a[p[i]][p[i+]]);
if(p[i]!=p[i+]&&k!=p[i+]) f[i+][p[i]][k]=min(f[i+][p[i]][k],f[i][j][k]+a[j][p[i+]]);
if(j!=p[i+]&&p[i]!=p[i+]) f[i+][j][p[i]]=min(f[i+][j][p[i]],f[i][j][k]+a[k][p[i+]]);
}
}
}
int minn=INT_MAX;
for(int i=;i<=l;i++){
for(int j=;j<=l;j++){
minn=min(minn,f[n][i][j]);
}
}
cout<<minn<<endl;
}
}
SPOJ 703 SERVICE - Mobile Service 题解的更多相关文章
- SP703 SERVICE - Mobile Service
思路:DP 提交:1次 题解: 我们把处理到的要求作为阶段. \(f[i][x][y][z]\)表示第 \(i\) 个要求,三个人分别的位置. 发现这样有很多无用状态,因为显然在第 \(i\) 个要求 ...
- SP703 SERVICE - Mobile Service[DP]
题意翻译 Description 一个公司有三个移动服务员.如果某个地方有一个请求,某个员工必须赶到那个地方去(那个地方没有其他员工),某一时刻只有一个员工能移动.只有被请求后,他才能移动,不允许在同 ...
- Unable to create Azure Mobile Service: Error 500
I had to go into my existing azure sql database server and under the configuration tab select " ...
- 如何使用新浪微博账户进行应用登录验证(基于Windows Azure Mobile Service 集成登录验证)
使用三方账号登录应用应该对大家来说已经不是什么新鲜事儿了,但是今天为什么还要在这里跟大家聊这个话题呢,原因很简单 Windows Azure Mobiles Service Authenticatio ...
- vs2015-Azure Mobile Service
/App_Data /App_Start/ WebApiConfig.cs using System; using System.Collections.Generic; using System.C ...
- windows phone开发-windows azure mobile service使用入门
在使用azure之前,我一直只能做本地app,或者使用第三方提供的api,尽管大多数情况下够用,但是仍不能随心所欲操纵数据,这种感觉不是特别好.于是在azure发布后,我就尝试使用azure来做为个人 ...
- CH5102 Mobile Service【线性dp】
5102 Mobile Service 0x50「动态规划」例题 描述 一个公司有三个移动服务员,最初分别在位置1,2,3处.如果某个位置(用一个整数表示)有一个请求,那么公司必须指派某名员工赶到那个 ...
- CH5102 Mobile Service
CH5102 Mobile Service 描述 一个公司有三个移动服务员,最初分别在位置1,2,3处.如果某个位置(用一个整数表示)有一个请求,那么公司必须指派某名员工赶到那个地方去.某一时刻只有一 ...
- CH 5102 Mobile Service(线性DP)
CH 5102 Mobile Service \(solution:\) 这道题很容易想到DP,因为题目里已经说了要按顺序完成这些请求.所以我们可以线性DP,但是这一题的状态不是很好设,因为数据范围有 ...
随机推荐
- python中oepen及fileobject初步整理之划水篇
open选项 参考官方文档,很多东西也没有看懂,将自己理解的部分先整理到这里,以后还是要参阅官方文档的. open (file, mode='r', buffering=-1, encoding=No ...
- CF contest 1216 Div3. F
题目链接:Click here Solution: 看起来是贪心,其实不然... 我们定义\(f[i]\)表示仅覆盖\(1\sim i\)所需要的最小代价,那么对\(i\)为0的点来说,易得\(f[i ...
- JavaWeb_Get和Post方法传输数据区别
Get方法和Post方法传输数据区别: 传送门 GET在浏览器回退时是无害的,而POST会再次提交请求 GET产生的URL地址可以被Bookmark,而POST不可以 GET请求会被浏览器主动cach ...
- [BZOJ2002][洛谷P3203][Hnoi2010]Bounce 弹飞绵羊(LCT维护链长)
luogu传送门 2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 16082 Solved: ...
- 4000余字为你讲透Codis内部工作原理
一.引言 Codis是一个分布式 Redis 解决方案,可以管理数量巨大的Redis节点.个推作为专业的第三方推送服务商,多年来专注于为开发者提供高效稳定的消息推送服务.每天通过个推平台下发的消息数量 ...
- webdriver驱动火狐浏览器报错:Unable to find a matching set of capabilities
raise exception_class(message, screen, stacktrace)selenium.common.exceptions.SessionNotCreatedExcept ...
- Is JavaScript a pass-by-reference or pass-by-value language?
Is JavaScript a pass-by-reference or pass-by-value language? A very detailed explanation about copyi ...
- 有关二次离线和 Yuno loves sqrt technology II
二次离线 前置技能 莫队 修改查询 \(O(\sqrt n )-O(1)\) 平衡 概念 考虑朴素莫队离线询问,过程中维护信息从 \([l,r]\) 扩展为 \([l\pm 1,r\pm 1]\) , ...
- Android 面试汇总<三>
1.3 计算机网络 基础 Q:五层协议的体系结构分别是什么?每一层都有哪些协议? 技术点:网络模型.协议 思路:分条解释每层名字以及协议 参考回答: 物理层 数据链路层:逻辑链路控制LLC.媒体接入控 ...
- WPF复杂形状按钮
方法很简单,将图片转换为<path>就可以了(需要用到Photoshop) 不过一般情况下制作按钮都不会用到这种方法,通常只要用image填充一张图片或者把路径转成按钮控件就可以了. 之所 ...