[BZOJ4244]邮戳拉力赛
Description
Input
Output
Sample Input
1 1 1 1
1 9 9 1
9 9 1 1
1 9 9 1
Sample Output
HINT
而且因为除了一条直线之外的全是环,所以如果存在$x$种第一种取法,就必定有$x$种第二种取法与之对应
而对于第三种和第四种取法,由于不会改变行走的方向,所以不用单独处理
这就可以对应到括号序列上来,第二种取法是左括号,第一种取法是右括号,这样对应的原因是你可以用二在后一在前来消除影响,但如果一在前就无法消除影响了,具体原因就是线路方向
然后还有需要注意的是,如果我们要用第三种取法,就要保证他之前有第二种取法的影响还未被消掉(你得保证此时的可以到达下行线)
所以我们设$f_{ij}$表示到$i$还剩$j$个左括号的时候最小代价是多少
按照上面四种情况转移即可
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,T;
int f[][];
int main() {
memset(f,,sizeof(f)),f[][]=;
scanf("%d%d",&n,&T);
for(int i=;i<=n;i++) {
int u,v,d,e;scanf("%d%d%d%d",&u,&v,&d,&e);
for(int j=;j<=n;j++) f[i-][j]+=j*T*;
//下->中->上
for(int j=;j<=n;j++) f[i][j]=min(f[i][j],f[i-][j-]+d+v);
//上->中->下
for(int j=;j<n;j++) f[i][j]=min(f[i][j],f[i-][j+]+u+e);
//上->中->上
for(int j=;j<=n;j++) f[i][j]=min(f[i][j],f[i-][j]+u+v);
//下->中->下
for(int j=;j<=n;j++) f[i][j]=min(f[i][j],f[i-][j]+d+e);
//消除上->中->下的影响
for(int j=;j<=n;j++) f[i][j]=min(f[i][j],f[i][j-]+d+v);
//消除下->中->上的影响
for(int j=n-;j;j--) f[i][j]=min(f[i][j],f[i][j+]+u+e);
}
printf("%d\n",f[n][]+(n+)*T);
return ;
}
[BZOJ4244]邮戳拉力赛的更多相关文章
- 【BZOJ4244】邮戳拉力赛 DP
[BZOJ4244]邮戳拉力赛 Description IOI铁路是由N+2个站点构成的直线线路.这条线路的车站从某一端的车站开始顺次标号为0...N+1. 这条路线上行驶的电车分为上行电车和下行电车 ...
- 【bzoj4244】邮戳拉力赛 背包dp
题目描述 IOI铁路是由N+2个站点构成的直线线路.这条线路的车站从某一端的车站开始顺次标号为0...N+1. 这条路线上行驶的电车分为上行电车和下行电车两种,上行电车沿编号增大方向行驶,下行电车沿编 ...
- bzoj4244 & loj2878. 「JOISC 2014 Day2」邮戳拉力赛 括号序列+背包
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4244 https://loj.ac/problem/2878 题解 挺妙的一道题. 一开始一直 ...
- JOISC 2014 邮戳拉力赛(基础DP)
题意 https://loj.ac/problem/2878 思路 真的神仙题,想到就很好写,想不到就写不出来. 肯定只能一个一个邮戳按顺序分析.首先,将取一枚邮戳的路径分为四种: 上行 \(\rig ...
- [LOJ#2878]. 「JOISC 2014 Day2」邮戳拉力赛[括号序列dp]
题意 题目链接 分析 如果走到了下行车站就一定会在前面的某个车站走回上行车站,可以看成是一对括号. 我们要求的就是 类似 代价最小的括号序列匹配问题,定义 f(i,j) 表示到 i 有 j 个左括号没 ...
- BZOJ 4244: 邮戳拉力赛
转化为括号序列DP 注意边界 #include<cstdio> #include<algorithm> #define rep(i,x,y) for (int i=x; i&l ...
- BZOJ 4244 邮戳拉力赛 (DP)
手动博客搬家: 本文发表于20181211 18:01:21, 原地址https://blog.csdn.net/suncongbo/article/details/84957907 为了防止我的博客 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- BZOJ 4236~4247 题解
BZOJ 4236 JOIOJI f[i][0..2]表示前i个字符中′J′/′O′/′I′的个数 将二元组<f[i][0]−f[i][1],f[i][1]−f[i][2]>扔进map,记 ...
随机推荐
- grunt学习二
1. 新建文件和文件目录 mkdir grunt-in-action cd grunt-in-action cd grunt-in-action mkdir grunt-empty cd grunt- ...
- sass和css的calc运算
1.sass不识别不同单位之间的计算,而calc则没问题. width: #{1rem - 2px}; /*出错*/ width: calc(1rem - 2px); 通常情况定制css样式,我不需要 ...
- java执行Shell命令
java程序中要执行linux命令主要依赖2个类:Process和Runtime首先看一下Process类:ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机 ...
- CentOS工作内容(一)CentOS6.4的安装 hwclock和date
CentOS工作内容(一)CentOS6.4的安装 hwclock和date 光碟安装 分配20G磁盘空间 插入光碟 选择第一项安装 如果要急救的话请选择第三项 启动安装进程 跳过光碟检测 选择nex ...
- 2018-2019-2 网络对抗技术 20165324 Exp4:恶意代码分析
2018-2019-2 网络对抗技术 20165324 网络对抗技术 Exp4:恶意代码分析 课下实验: 实践目标 是监控你自己系统的运行状态,看有没有可疑的程序在运行. 是分析一个恶意软件,就分析E ...
- excel 数字转文本
问: 在EXCEL2003中,如何把一列数字转换成文本格式我的意思的,这一列数字全部变成带有文本格式符号(就是左上角有个绿色小三角)的那种以文本形式存储的数字.目前我只知道一个一个双击单元格,但一列数 ...
- html04
web的三要素:HTML:搭建页面的基本结构css: 对页面进行修饰-让页面更美观JavaScript:让页面可以有交互行为(用户和界面)1.js是什么:JavaScript :页面的脚本语言,运行在 ...
- BinarySearch
今天看代码,看到这么一段,开始没有看明白,记录下来备忘 foreach (FinancialReport r3 in addAorList) { i ...
- easyDialog参数配置说明
easyDialog不依赖框架,使用起来很简单,只要引入easydialog.js文件就可以使用了: // 引入easyDialog <script src="easydialog.j ...
- chrome浏览器使用
1.如何打开多个历史网页.这个需求是这样的,有时候开了多个网页查找资料,但是又还没有做完,然后又需要重启电脑.显然重启电脑后再开启浏览器,一般都是显示浏览器的主页了,上次开的那些网页全部在历史记录里面 ...