[SimpleOJ229]隧道
题目大意:
有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]隧道的更多相关文章
- SSH隧道应用, 突破网络限制
文/怡文圣美 这篇文章可以帮你解决下面三个问题: 不能直连服务器, 要先登陆跳板机, 造成客户端工具无法连接服务器. 服务器没有公网IP, 且只允许公司IP访问, 要在家里操作要先远程桌面到工作机再登 ...
- 前端学HTTP之网关、隧道和中继
前面的话 Web是一种强大的内容发布工具.人们已经从只在网上发送静态的在线文档,发展到共享更复杂的资源,比如数据库内容或动态生成的HTML页面.Web浏览器为用户提供了一种统一的方式来访问因特网上的内 ...
- ngrok反向隧道--获取内网IP
ngrok反向隧道 前情提要:小明与小白各有一台主机,两台主机在同一内网,小明想直接通过内网ssh到小白的主机上.但是小白的ip地址会不断的变化,而小明不想每次都要麻烦小白查看ip.于是小明催生了一个 ...
- SSH正反向隧道
正向隧道 拓扑如下: 说明: CLIENT不能直接访问WEB服务器,AGENT可访问WEB服务器: 在AGENT上通过创建ssh正向隧道,使CLIENT可以通过AGENT间接访问WEB服务器: AGE ...
- Windows下使用Xshell建立反向隧道
反向隧道是一个进行内网穿透的简单而有用的方法.在Linux下通过OpenSSH和AutoSSH可以很容易地建立稳定的反向隧道.但是在Windows下,还能看到有人特意装个Cygwin来运行这些工具…… ...
- WPF的路由事件、冒泡事件、隧道事件(预览事件)
本文摘要: 1:什么是路由事件: 2:中断事件路由: 3:自定义路由事件: 4:为什么需要自定义路由事件: 5:什么是冒泡事件和预览事件(隧道事件): 1:什么是路由事件 WPF中的事件为路由事件,所 ...
- XSHELL使用隧道
线上系统中,搭建了一个elasticsearch环境,想要访问页面,发现环境的内网中没有windows机器,无法使用浏览器来直接进行web页面的访问,于是直接使用了XSELL中强大的功能"隧 ...
- HTTP权威协议笔记-7.集成点:网关、隧道及中继
.8.1 网关 定义:网关类似与翻译器,它抽象出了一种能够到达资源的方法. 实用:网关可以自动将HTTP流量转换为其他协议,这样使用HTTP协议的一方就不需要了解其他协议,也可实现与其他程序或设备交互 ...
- Android终端配置isatap隧道使用IPV6的方法
使用isatap隧道可以在手机有IPV4网络的情况下访问IPv6网络资源.关于isatap隧道的配置方法,清华.上交两所学校都给出了相应的在windows xp/2003,windows 2000,以 ...
随机推荐
- css的盒模型手机端兼容写法应该是啥样的呢?
前言:刚刚接触css3的盒模型,感觉对于解决水平垂直居中.固定宽度/高度和可变宽度/高度同时存在这样的问题很有效.但是最近在看一个腾讯手机端框架(Frozen UI )的时候发现一个很神奇的多行文字截 ...
- 20155303 2016-2017-2 《Java程序设计》第十周学习总结
20155303 2016-2017-2 <Java程序设计>第十周学习总结 目录 学习内容总结 网络编程 数据库 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考 ...
- Spring4笔记11--SSH整合2--SpringWeb
SSH 框架整合技术: 2. Spring 在 Web 项目中的使用(建立在Spring与Hibernate整合的基础上): 在 Web 项目中使用 Spring 框架,首先要解决在 Servlet ...
- 禅道CMS 获文件名脚本
use Net::HTTP::GET; use Base64; ; windowWidth=; windowHeight=; sid=jg9g2mk5kmru46lmd3g2evoc87>; # ...
- RobotFramework基本用法(二)
双击打开C:\Python27\Scripts目录下的 ride.py 一,定义变量,打印 1,右键File-->New Poreject,在项目下右键New suite,在套件下右键 New ...
- centos 升级linux内核
=============================================== 2018/1/14_第1次修改 ccb_warlock == ...
- cvpr densnet论文
- 洛谷P1195口袋的天空
传送门啦 一个裸的最小生成树,输出 $ No Answer $ 的情况只有 $ k < n $ 的时候. 开始令 $ num =n $ ,如果 $ num = k $ ,直接输出 $ 0 $ , ...
- SCTF 2015 pwn试题分析
Re1 是一个简单的字符串加密.程序使用了多个线程,然后进行同步.等加密线程加密好了之后才会启动验证线程.这个题比较坑的是IDA F5出来的结果不对,不知道是不是混淆机制. 刚开始看的是F5后的伪代码 ...
- Delphi与Socket
一.Delphi与Socket计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCPIP和UDP协议.TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登陆B ...