题目大意:
  有10个格子,初始状态a和b分别在5和6上。
  现在有n个任务,每个任务都有特定的位置。
  在每个单位时间,a和b可以分别进行以下事件中的任意一件:
    1.向左(右)移动一个格子;
    2.锁定在当前格子执行任务。
    (a和b不能同时执行任务,且同一时刻a必须严格在b左边)。
  问完成所有任务的最小时间。

思路:
  动态规划。
  f[i][j][k]表示完成第i个任务后,a在j且b在k时所经过的最少时间。
  设当前任务为p,当前待转移的状态为f[i][p]或f[p][i],枚举完成上一个任务后a和b所在的位置j和l,并加上分别从j,l移动到p,i或i,p的最大时间。
  数据格式有点问题,要手动判断换行符和空行。

 #include<cstdio>
#include<cctype>
#include<cstring>
#include<algorithm>
const int inf=0x40000000;
const int N=,M=;
char s[N];
int f[N][M][M];
bool get(char s[]) {
char ch;
int n=;
while(!isdigit(ch=getchar())) {
if(!~ch) return false;
if(ch=='\n') {
s[n]='\0';
return true;
}
}
s[n++]=ch;
while(isdigit(ch=getchar())) {
s[n++]=ch;
}
s[n]='\0';
while(ch!='\n') ch=getchar();
return true;
}
int main() {
while(get(s)) {
int n=strlen(s);
if(!n) {
puts("");
continue;
}
std::fill(&f[][][],&f[n][M-][M],inf);
f[][][]=;
for(register int k=;k<=n;k++) {
int p=s[k-]-'';
if(!p) p=;
for(register int i=;i<p;i++) {
for(register int j=;j<M;j++) {
for(register int l=j+;l<M;l++) {
f[k][i][p]=std::min(f[k][i][p],f[k-][j][l]+std::max(std::abs(i-j),std::abs(p-l)+));
}
}
}
for(register int i=p+;i<M;i++) {
for(register int j=;j<M;j++) {
for(register int l=j+;l<M;l++) {
f[k][p][i]=std::min(f[k][p][i],f[k-][j][l]+std::max(std::abs(p-j)+,std::abs(i-l)));
}
}
}
}
int ans=inf;
for(register int i=;i<M;i++) {
for(register int j=;j<M;j++) {
ans=std::min(ans,f[n][i][j]);
}
}
printf("%d\n",ans);
}
return ;
}

[SimpleOJ229]隧道的更多相关文章

  1. SSH隧道应用, 突破网络限制

    文/怡文圣美 这篇文章可以帮你解决下面三个问题: 不能直连服务器, 要先登陆跳板机, 造成客户端工具无法连接服务器. 服务器没有公网IP, 且只允许公司IP访问, 要在家里操作要先远程桌面到工作机再登 ...

  2. 前端学HTTP之网关、隧道和中继

    前面的话 Web是一种强大的内容发布工具.人们已经从只在网上发送静态的在线文档,发展到共享更复杂的资源,比如数据库内容或动态生成的HTML页面.Web浏览器为用户提供了一种统一的方式来访问因特网上的内 ...

  3. ngrok反向隧道--获取内网IP

    ngrok反向隧道 前情提要:小明与小白各有一台主机,两台主机在同一内网,小明想直接通过内网ssh到小白的主机上.但是小白的ip地址会不断的变化,而小明不想每次都要麻烦小白查看ip.于是小明催生了一个 ...

  4. SSH正反向隧道

    正向隧道 拓扑如下: 说明: CLIENT不能直接访问WEB服务器,AGENT可访问WEB服务器: 在AGENT上通过创建ssh正向隧道,使CLIENT可以通过AGENT间接访问WEB服务器: AGE ...

  5. Windows下使用Xshell建立反向隧道

    反向隧道是一个进行内网穿透的简单而有用的方法.在Linux下通过OpenSSH和AutoSSH可以很容易地建立稳定的反向隧道.但是在Windows下,还能看到有人特意装个Cygwin来运行这些工具…… ...

  6. WPF的路由事件、冒泡事件、隧道事件(预览事件)

    本文摘要: 1:什么是路由事件: 2:中断事件路由: 3:自定义路由事件: 4:为什么需要自定义路由事件: 5:什么是冒泡事件和预览事件(隧道事件): 1:什么是路由事件 WPF中的事件为路由事件,所 ...

  7. XSHELL使用隧道

    线上系统中,搭建了一个elasticsearch环境,想要访问页面,发现环境的内网中没有windows机器,无法使用浏览器来直接进行web页面的访问,于是直接使用了XSELL中强大的功能"隧 ...

  8. HTTP权威协议笔记-7.集成点:网关、隧道及中继

    .8.1 网关 定义:网关类似与翻译器,它抽象出了一种能够到达资源的方法. 实用:网关可以自动将HTTP流量转换为其他协议,这样使用HTTP协议的一方就不需要了解其他协议,也可实现与其他程序或设备交互 ...

  9. Android终端配置isatap隧道使用IPV6的方法

    使用isatap隧道可以在手机有IPV4网络的情况下访问IPv6网络资源.关于isatap隧道的配置方法,清华.上交两所学校都给出了相应的在windows xp/2003,windows 2000,以 ...

随机推荐

  1. 从Python到Web开发

    基础部分: 1-编程基础及Python环境部署 2-Python基础语法-内存管理-运算符-程序控制 3-Python内置结构-列表 4-Python数据类型之元组-字符串 5-python的封装与结 ...

  2. Django 1.10中文文档-模型参考

    模型字段 本文档包含了Django提供的全部模型 Field 包括 字段选项 和 字段类型 的API参考. 参见 如果内建的字段不能满足你的需求, 你可以蚕食 django-localflavor ( ...

  3. httpd功能配置之虚拟主机【转】

    apache默认使用80端口提供服务,使用主服务器配置的话,一台物理机只能提供一个站点服务:可以使用虚拟主机方式提供不同的访问,以实现一台主机提供多站点服务. 虚拟主机的实现方式有三种:基于端口.基于 ...

  4. WPF中ListBox的绑定

    WPF中列表式控件派生自ItemsControl类,继承了ItemsSource属性.ItemsSource属性可以接收一个IEnumerable接口派生类的实例作为自己的值(所有可被迭代遍历的集合都 ...

  5. git —— 远程仓库(操作)

    运行目录:本地仓库目录 1.本地关联远程仓库 $ git remote add origin 你的远程库地址(SSH和HTTP都可以) 2.远程仓库为空,可选择合并远程仓库和本地仓库,远程库不为空时, ...

  6. Java 容器的打印

    Java容器类库中的两种主要类型,它们的区别在于容器中每个"槽"保存的元素个数 Clollection容器只能在保存一个元素,此类容器包括: List,它以特定顺序保存一组元素 S ...

  7. SQlserver创建函数实现只取某个字段的数字部分

    create FUNCTION [dbo].[GET_NUMBER](@S VARCHAR(100)) RETURNS VARCHAR(100) AS BEGIN WHILE PATINDEX('%[ ...

  8. ***四种参数传递的形式——URL,超链接,js,form表单

    什么时候用GET,  查,删 什么时候用POST,增,改  (特列:登陆用Post,因为不能让用户名和密码显示在URL上) 4种get传参方式 <html xmlns="http:// ...

  9. Mybatis入门及Dao开发方式

    本节内容: Mybatis介绍 使用jdbc编程问题总结 Mybatis架构 Mybatis入门程序 Dao的开发方式 SqlMapConfig.xml文件说明 一.Mybatis介绍 MyBatis ...

  10. #Git 详细中文安装教程

    Step 1 Information 信息 Please read the following important information before continuing 继续之前,请阅读以下重要 ...