【bzoj4244】邮戳拉力赛 背包dp
题目描述
输入
输出
样例输入
4 1
1 1 1 1
1 9 9 1
9 9 1 1
1 9 9 1
样例输出
23
题解
只可意会不可言传的非常神的背包dp,非常难写题解因此写的不好不要怪我。。。
考虑一个车站是怎么经过的,共有以下四种情况:
从后面来、往后面走,代价为d+v;
从前面来、往前面走,代价为u+e;
从后面来、往前面走,代价为d+e;
从前面来、往后面走,代价为u+v。
那么先不考虑从0直接到n+1的必经行程,中间的部分一定是一个回路。
从左向右考虑回路的每一段,必然是若干个向右的路线。把向右的路线看作左括号,向左的看作右括号,那么有:
第1种情况为'((',第2种情况为'))',第3种情况为')(',第4种情况为'()'。答案就是合法的括号序列。
设 $f[i][j]$ 表示前 $i$ 个位置,多余的'('数目为 $2j$ 的最小代价。那么考虑这4种情况即可。注意第3、4种情况可能出现多次,因此是完全背包。
转移之间需要加上回路的代价 $T·2j$ 。
最后加上从0到n+1的代价 $(n+1)T$ 即为答案。
时间复杂度 $O(n^2)$
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int f[3010][3010];
int main()
{
int n , m , i , j , u , v , d , e;
scanf("%d%d" , &n , &m);
memset(f , 0x3f , sizeof(f)) , f[0][0] = 0;
for(i = 1 ; i <= n ; i ++ )
{
scanf("%d%d%d%d" , &u , &v , &d , &e);
for(j = 1 ; j <= n ; j ++ ) f[i - 1][j] += j * m * 2;
for(j = 1 ; j <= n ; j ++ ) f[i][j] = min(f[i][j] , f[i - 1][j - 1] + d + v);
for(j = 0 ; j < n ; j ++ ) f[i][j] = min(f[i][j] , f[i - 1][j + 1] + u + e);
for(j = 1 ; j <= n ; j ++ ) f[i][j] = min(f[i][j] , f[i - 1][j] + d + e);
for(j = 0 ; j <= n ; j ++ ) f[i][j] = min(f[i][j] , f[i - 1][j] + u + v);
for(j = 1 ; j <= n ; j ++ ) f[i][j] = min(f[i][j] , f[i][j - 1] + d + v);
for(j = n - 1 ; ~j ; j -- ) f[i][j] = min(f[i][j] , f[i][j + 1] + u + e);
}
printf("%d\n" , f[n][0] + (n + 1) * m);
return 0;
}
【bzoj4244】邮戳拉力赛 背包dp的更多相关文章
- [BZOJ4244]邮戳拉力赛
Description IOI铁路是由N+2个站点构成的直线线路.这条线路的车站从某一端的车站开始顺次标号为0...N+1. 这条路线上行驶的电车分为上行电车和下行电车两种,上行电车沿编号增大方向行驶 ...
- 【BZOJ4244】邮戳拉力赛 DP
[BZOJ4244]邮戳拉力赛 Description IOI铁路是由N+2个站点构成的直线线路.这条线路的车站从某一端的车站开始顺次标号为0...N+1. 这条路线上行驶的电车分为上行电车和下行电车 ...
- 背包dp整理
01背包 动态规划是一种高效的算法.在数学和计算机科学中,是一种将复杂问题的分成多个简单的小问题思想 ---- 分而治之.因此我们使用动态规划的时候,原问题必须是重叠的子问题.运用动态规划设计的算法比 ...
- hdu 5534 Partial Tree 背包DP
Partial Tree Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...
- HDU 5501 The Highest Mark 背包dp
The Highest Mark Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...
- Codeforces Codeforces Round #319 (Div. 2) B. Modulo Sum 背包dp
B. Modulo Sum Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/577/problem/ ...
- noj [1479] How many (01背包||DP||DFS)
http://ac.nbutoj.com/Problem/view.xhtml?id=1479 [1479] How many 时间限制: 1000 ms 内存限制: 65535 K 问题描述 The ...
- HDU 1011 树形背包(DP) Starship Troopers
题目链接: HDU 1011 树形背包(DP) Starship Troopers 题意: 地图中有一些房间, 每个房间有一定的bugs和得到brains的可能性值, 一个人带领m支军队从入口(房 ...
- BZOJ 1004: [HNOI2008]Cards( 置换群 + burnside引理 + 背包dp + 乘法逆元 )
题意保证了是一个置换群. 根据burnside引理, 答案为Σc(f) / (M+1). c(f)表示置换f的不动点数, 而题目限制了颜色的数量, 所以还得满足题目, 用背包dp来计算.dp(x,i, ...
随机推荐
- 20155328 2016-2017-2 《Java程序设计》 第十周学习内容总结
20155328 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 JAVA和ANDROID开发学习指南 第22章 网络概览 两台计算机用于通信的语言叫做&qu ...
- Oracle下建立dblink时的权限问题
如果用普通用户,如果没授权,是无法建立dblink的: [oracle@oracle000 ~]$ sqlplus gao/gao lines) SQL Production :: Copyright ...
- 北京Uber优步司机奖励政策(4月13日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Gulp 有用的地址
gulp似乎成为web开发的必选工具. 推荐一个非常好的入门教程 https://markgoodyear.com/2014/01/getting-started-with-gulp/ 官方插件列表: ...
- 四、Django设置相关
1.全局设置 setttings文件 import os import sys # Build paths inside the project like this: os.path.join(BAS ...
- Scrapy爬取美女图片第四集 突破反爬虫(上)
本周又和大家见面了,首先说一下我最近正在做和将要做的一些事情.(我的新书<Python爬虫开发与项目实战>出版了,大家可以看一下样章) 技术方面的事情:本次端午假期没有休息,正在使用fl ...
- CentOS 7.2二进制安装mysql-5.7.19
官方文档地址:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html 开始安装 1.下载mysql二进制包 # cd /usr ...
- [线性DP][codeforces-1110D.Jongmah]一道花里胡哨的DP题
题目来源: Codeforces - 1110D 题意:你有n张牌(1,2,3,...,m)你要尽可能多的打出[x,x+1,x+2] 或者[x,x,x]的牌型,问最多能打出多少种牌 思路: 1.三组[ ...
- django项目中关于跨域CORS
1.使用django-cors-headers扩展,但首先进行安装 2.在配置中添加应用 3.在中间层中设置:“corsheaders.middleware.CorsMiddleware” 4.添加C ...
- zend安装及破解
Zend下载 https://pan.baidu.com/s/1fCfUQ0j7dxEtOzbNnsgODg 破解: 1.打开dmg文件安装,将Zend Studio拖拽至applications进行 ...