【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, ...
随机推荐
- Struts 2(三):示例→基于Struts 2的用户注册模块
示例→基于Struts2的用户注册模块 1.用户注册模块需求描述 在用户注册页面中填写用户信息,包括用户名.用户密码.确认密码.姓名等信息,填写完成后提交注册表单给Struts 2的业务控制器Acti ...
- 使用Photon引擎进行unity网络游戏开发(三)——网络游戏大厅及房间
使用Photon引擎进行unity网络游戏开发(三)--网络游戏大厅及房间 Photon PUN Unity 网络游戏开发 连接到Photon ConnectUsingSettings 设置你的客户端 ...
- HDU-4055:Number String
链接:HDU-4055:Number String 题意:给你一个字符串s,s[i] = 'D'表示排列中a[i] > a[i+1],s[i] = 'I'表示排列中a[i] < a[i+1 ...
- Redis5.0:在这些场景使用,高效率还低成本!
很多大型电商网站.视频直播和游戏应用等,存在大规模数据访问,对数据查询效率要求高,且数据结构简单,不涉及太多关联查询. 这种场景使用Redis,在速度上对传统磁盘数据库有很大优势,能够有效减少数据库磁 ...
- 简析Monte Carlo与TD算法的相关问题
Monte Carlo算法是否能够做到一步更新,即在线学习? 答案显然是不能,如果可以的话,TD算法还有何存在的意义?MC算法必须要等到episode结束后才可以进行值估计的主要原因在于对Return ...
- PIL包中图像的mode参数
在这里的第一篇. 这篇的是为了说明PIL库中图像的mode参数. 我做的事情是: 在本地找了jpg的图,convert为不同mode,将不同的图截取做了个脑图,有个直观的感觉吧. 把不同mode的图通 ...
- 亚马逊AWS业务副总裁:如何在基础设施上降成本
腾讯科技 林靖东 11月17日编译 亚马逊Amazon Web Services业务的副总裁.著名工程师詹姆斯汉密尔顿(James Hamilton)在AWS re:Invent大会上解释了公司是如何 ...
- 王者荣耀交流协会--第3次Scrum会议
Scrum master:王玉玲 要求1:工作照片 要求2:时间跨度:2017年10月15号 6:00--6:24 共计24min要求3:地点:传媒西楼204,会议室要求4:立会内容:1.从昨日会 ...
- 冲刺ing-5
第五次Scrum冲刺 队员完成的任务 队员 完成任务 吴伟华 Leangoo的看板截图,燃尽图 蔺皓雯 编写博客 蔡晨旸 测试 曾茜 测试 鲁婧楠 测试 杨池宇 测试 成员遇到的问题 队员 问题 吴伟 ...
- CSS3:不可思议的border属性
在CSS中,其border属性有很多的规则.对于一些事物,例如三角形或者其它的图像,我们仍然使用图片代替.但是现在就不需要了,我们可以用CSS形成一些基本图形,我分享了一些关于这方面的技巧. 1.正三 ...