CH5102 Mobile Service
描述
一个公司有三个移动服务员,最初分别在位置1,2,3处。
如果某个位置(用一个整数表示)有一个请求,那么公司必须指派某名员工赶到那个地方去。某一时刻只有一个员工能移动,且不允许在同样的位置出现两个员工。从 p 到 q 移动一个员工,需要花费 c(p,q)。这个函数不一定对称,但保证 c(p,p)=0。
给出N个请求,请求发生的位置分别为 p_1~p_N。公司必须按顺序依次满足所有请求,目标是最小化公司花费,请你帮忙计算这个最小花费。N≤1000,位置是1~200的整数。输入格式
第一行有两个整数L,N(3<=L<=200, 1<=N<=1000)。L是位置数;N是请求数。每个位置从1到L编号。下L行每行包含L个非负整数。第i+1行的第j个数表示c(i,j) ,并且它小于2000。最后一行包含N个数,是请求列表。一开始三个服务员分别在位置1,2,3。
输出格式
一个数M,表示最小服务花费。
- 用f[i,x,y]表示一个员工完成了第i个订单,在ask[i]处,其余两个分别在x,y时的最小花费,注意:题目要求不能一个位置出现两名员工
- 启发1:在确定DP状态时,要选择最小的能够覆盖整个状态空间的“维度集合”,若DP状态由多个维度构成,则应检查这些维度之间能否相互导出,用尽量少的维度覆盖整个状态空间,如本题中阶段i和两个员工的位置即可表示状态,另一个员工的状态可以直接得出。
- 启发2:在转移时,如果总是从一个阶段转移到下一个阶段(本题从i到i+1),则没有必要关心附加信息维度的大小变化情况(本题x,y,p[i]前后大小变化不定),因为无后效性已经由“阶段”保证
代码:
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std; int n,m;
int c[][];
int f[][][];
int p[]; int main()
{
scanf("%d%d",&n,&m);
for(int i= ; i<=n ; i++)
for(int j= ; j<=n ; j++)
scanf("%d",&c[i][j]);
for(int i= ; i<=m ; i++) scanf("%d",&p[i]);
memset(f,0x7f,sizeof(f));
f[][][]=,p[]=;
//初始化
for(int i= ; i<m ; i++)
for(int x= ; x<=n ; x++)
for(int y= ; y<=n ; y++)
{
int z=p[i];
if(x==y||y==z||z==x) continue;
if(p[i+]!=x && p[i+]!=y)
f[i+][x][y] = min(f[i+][x][y],f[i][x][y]+c[z][p[i+]]);
if(p[i+]!=x && p[i+]!=z)
f[i+][x][z] = min(f[i+][x][z],f[i][x][y]+c[y][p[i+]]);
if(p[i+]!=y && p[i+]!=z)
f[i+][y][z] = min(f[i+][y][z],f[i][x][y]+c[x][p[i+]]);
} int ans=0x7f7f7f7f;
for(int i= ; i<=n ; i++)
for(int j= ; j<=n ; j++)
ans=min(ans,f[m][i][j]);
printf("%d\n",ans);
return ;
}
CH5102 Mobile Service的更多相关文章
- CH5102 Mobile Service【线性dp】
5102 Mobile Service 0x50「动态规划」例题 描述 一个公司有三个移动服务员,最初分别在位置1,2,3处.如果某个位置(用一个整数表示)有一个请求,那么公司必须指派某名员工赶到那个 ...
- 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来做为个人 ...
- CH 5102 Mobile Service(线性DP)
CH 5102 Mobile Service \(solution:\) 这道题很容易想到DP,因为题目里已经说了要按顺序完成这些请求.所以我们可以线性DP,但是这一题的状态不是很好设,因为数据范围有 ...
- Windows Azure之Mobile Service
我建个android app和Windows Azure的Mobile Service配合,以实现会员注册的功能,实际十分简单,微软家的东西真心好用 首先新建个Mobile Service New-& ...
- TYVJ1061 Mobile Service
P1061 Mobile Service 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 一个公司有三个移动服务员.如果某个地方有一个请求,某个员工必须赶到那 ...
- CH5102/SPOJ?? Mobile Service/P4046 [JSOI2010]快递服务[线性dp+卡常]
http://contest-hunter.org:83/contest/0x50%E3%80%8C%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E3%80%8D%E4%B ...
随机推荐
- Python操作SQLServer示例
本文主要是Python操作SQLServer示例,包括执行查询及更新操作(写入中文). 需要注意的是:读取数据的时候需要decode('utf-8'),写数据的时候需要encode('utf-8'), ...
- require.js的用法(转)
一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代 ...
- 万能头文件#include<bits/stdc++.h>
最近在打cf时赛后翻阅别人的代码总是会发现一个陌生而奇怪的头文件#include<bits/stdc++.h> 奇怪之处就在于基本上所有的代码只要用了这个头文件就不再写其他头文件了. 百度 ...
- LoadRunner11学习记录五 -- 错误提示分析
LoadRunner测试结果具体分析: 一.错误提示分析 分析实例: 1.Error: Failed to connect to server “172.17.7.230″: [10060] Con ...
- nginx在windows平台下的使用笔记
nginx主要提供反向代理及负载均衡的能力,重定向报文代理及报文数据替换也是常用功能.(参考https://www.cnblogs.com/fanzhidongyzby/p/5194895.html) ...
- 1028 Web Navigation
题目链接: http://poj.org/problem?id=1028 题意: 模拟浏览器的前进/后退/访问/退出 的四个操作. 输出当前访问的URL或者Ignore(如果不能前进/后退). 分析: ...
- ServletRequest面试题
使用request获得请求行:String getmethod():获得请求的资源:String getcontextpath():----web应用名称request是一个域对象request完成请 ...
- maven 引用本地jar
1.添加lib文件夹在src文件夹中.2.拷贝所需要的test.jar包到lib文件夹.3.在pom文件加入如下依赖 <!--添加本地私有包--><dependency> &l ...
- python可视化
1.折线图 import matplotlib.pyplot as plt x = [1,2,3,4,5] squares = [1,4,9,16,25] plt.plot(x,squares) pl ...
- javafx 继承Application打开
前段时间需要用到javafx的Application来写一些图形界面之类的东西,但是run了之后eclipese不会去运行它,很纳闷,然后看了一下run as发现是没有main入口 其实加上一个mai ...