poj3926 parade (单调队列+dp)
题意:有n行路,每行路被分成m段,每一段有长度和权值,要求从最下面一行走到最上面一行某个位置,可以从相邻两行的同一列交点往上走,并且在同一行走的长度要<=K,求走过的最大权值
设f[i][j]为到第i行,第j个交点的最大值
设sumvalue[i][j,k]为第i行从第j个交点到第k个交点经过道路的权值之和
设sumtime[i][j,k]为第i行从第j个交点到第k个交点经过道路的长度之和
则f[i][j]=max{
f[i-1][k]+sumvalue[i][k,j] ,k<=j且sumtime[i][k,j]<=K
f[i-1][k]+sumvalue[i][j,k] ,k>j且sumtime[i][j,k]<=K
}
以第一个方程为例,单调队列记某行i∈[k,j]的f[][i]+sumvalue[][i..j]的最大值即可
其中,在j++的时候,由于要给所有数加上val[][j]的值,我们就假装大家一起
减掉了val[][j]的值,只给要新进的f[][j]+val[][j]减掉sumvalue[][0..j]即可
(最后给f值的时候别忘了加回来)
#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long int
using namespace std;
const int maxn=,maxm=; int rd(){
int x=,neg=;char c=getchar();
while(c<''||c>'') {if(c=='-') neg=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-'',c=getchar();
return x*neg;
} int N,M,K;
int val[maxm][maxn],len[maxm][maxn],head,tail;
LL f[maxm][maxn],q[maxm][],ans; inline void insert(LL x,int y){
for(int i=tail;i>=head;i--){
if(q[i][]>x){
tail=i+;q[tail][]=x;q[tail][]=y;
return;
}
}tail=head;q[tail][]=x;q[tail][]=y;
} int main(){
int i,j,k;
//freopen("3926.in","r",stdin);
while(){
N=rd(),M=rd(),K=rd();if(!N) break;
for(i=;i<=N+;i++){
for(j=;j<=M;j++) val[j][i]=rd();
}for(i=;i<=N+;i++){
for(j=;j<=M;j++) len[j][i]=rd();
}
memset(f,,sizeof(f));ans=;
for(i=;i<=N+;i++){
LL sv=,st=;
tail=head=;memset(q,,sizeof(q));
for(j=;j<=M;j++){
sv+=val[j][i],st+=len[j][i];
insert(f[j][i-]-sv,st);
while(st-q[head][]>K) head++;
f[j][i]=q[head][]+sv;
}
sv=;st=;
tail=head=;memset(q,,sizeof(q));
for(j=M;j>=;j--){
sv+=val[j+][i],st+=len[j+][i];
insert(f[j][i-]-sv,st);
while(st-q[head][]>K) head++;
f[j][i]=max(f[j][i],q[head][]+sv);
}
}
for(j=;j<=M;j++) ans=max(ans,f[j][N+]);
printf("%d\n",ans);
} }
poj3926 parade (单调队列+dp)的更多相关文章
- UVA Live Achrive 4327 Parade (单调队列,dp)
容易想到dp[i][j]表示在第i行j个路口的开始走最大高兴值. 每次可以向左走,或者向右边走,然后向北走.(或者直接往北) 向左走到,状态转移为dp[i][j] = dp[i][k] + happy ...
- POJ 3017 单调队列dp
Cut the Sequence Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 8764 Accepted: 2576 ...
- [TyvjP1313] [NOIP2010初赛]烽火传递(单调队列 + DP)
传送门 就是个单调队列+DP嘛. ——代码 #include <cstdio> ; , t = , ans = ~( << ); int q[MAXN], a[MAXN], f ...
- zstu 4237 马里奥的求救——(单调队列DP)
题目链接:http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4237 这题可以转化为每次可以走g~d+x步,求最大分数,且最大分数的步数最少. ...
- 1304F2 - Animal Observation (hard version) 线段树or单调队列 +DP
1304F2 - Animal Observation (hard version) 线段树or单调队列 +DP 题意 用摄像机观察动物,有两个摄像机,一个可以放在奇数天,一个可以放在偶数天.摄像机在 ...
- Parade(单调队列优化dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2490 Parade Time Limit: 4000/2000 MS (Java/Others) ...
- LA 4327 Parade(单调队列优化dp)
题目链接: 题目大意(摘自刘汝佳<<算法竞赛入门经典--训练指南>>):F城是由n+1条横向路和m+1条竖向路组成.你的任务是从最南边的路走到最北边的路,使得走过的路上的高兴值 ...
- vijos P1243 生产产品(单调队列+DP)
P1243生产产品 描述 在经过一段时间的经营后,dd_engi的OI商店不满足于从别的供货商那里购买产 品放上货架,而要开始自己生产产品了!产品的生产需要M个步骤,每一个步骤都可以在N台机器 ...
- POJ 1821 单调队列+dp
题目大意:有K个工人,有n个墙,现在要给墙涂色.然后每个工人坐在Si上,他能刷的最大范围是Li,且必须是一个连续子区间,而且必须过Si,他刷完后能获得Pi钱 思路:定义dp[i][j]表示前i个人,涂 ...
随机推荐
- 消除element.style { }
1.在写前台页面时,我们会发现控制台里会自动出现一些样式覆盖掉我们定义的样式: 解决的办法: 把被覆盖的样式单独定义出来,并在样式后面加上 !important,表示高优先级.
- python-边练边学
#换行print(a),print(b),print(c)'''以上是不换行打印以下是换行打印'''print(a)print(b)print(c) #注释#python中的注释有三种方式:单行注释 ...
- PAT L3-010 是否完全二叉搜索树
https://pintia.cn/problem-sets/994805046380707840/problems/994805049870368768 将一系列给定数字顺序插入一个初始为空的二叉搜 ...
- [转帖]Linux 硬件和系统配置查看命令小结
https://blog.csdn.net/strongwangjiawei/article/details/8208825 转帖了不少 发现自己记住的还是不多.. Linux 硬件和系统配置查看命令 ...
- python之路--内置函数03
一 . 正则表达式 匹配字符串 元字符 . 除了换行 \w 数字, 字母, 下划线 \d 数字 \s 空白符 \n \t \b 单词的边界 \W 非xxx \D \S [ ] 字符组 or的关系 [^ ...
- Java多线程6:Synchronized锁代码块(this和任意对象)
一.Synchronized(this)锁代码块 用关键字synchronized修饰方法在有些情况下是有弊端的,若是执行该方法所需的时间比较长,线程1执行该方法的时候,线程2就必须等待.这种情况下就 ...
- 关于IWMS中遇到的问题及解决方法
1.生成的文章上传到外网上,但是没一会儿又变成原来的样子? 解决方案:把上传页面对应的template中的.aspx页面也要上传到外网去.
- 三、checkedListBoxControl
一.checkedListBoxControl的使用全选 private void InitDate() { CheckedListBoxItem[] itemArr = { new CheckedL ...
- Apache ab 单测 分布式
使用synchronized 处理并发 缺点:无法做到细粒度控制 只适合单点的情况 使用Redis作为分布式锁 setnx命令 设计模式 :使用 !setnx 加锁 getset命令
- 【数学建模】day10-主成分分析
0. 关于主成分分析的详细理解以及理论推导,这篇blog中讲的很清楚. 主成分分析是一种常用手段.这应该与因子分析等区别开来,重点在于理解主成分分析的作用以及什么情况下使用主成分分析,本文重点讲解如何 ...