容易想到dp[i][j]表示在第i行j个路口的开始走最大高兴值。

每次可以向左走,或者向右边走,然后向北走。(或者直接往北)

向左走到,状态转移为dp[i][j] = dp[i][k] + happy[i][k][j](为了方便处理,i从1开始编号,0行dp值存0)

处理出前缀和,happy[i][k][j]表示为sum[i][j] - sum[i][k]

向左走应该取max(dp[i][k]-sum[i][k])

k应该满足time[i][k][j] <= k

随着j的变化k的范围是一个滑动窗口,用单调队列去维护。

右边走转移 dp[i][k] + sum[i][k] - sum[i][j],类似处理。

转移为O(1),复杂度为O(N*M)

#include<bits/stdc++.h>
using namespace std; const int N = , M = 1e4+;
int n, m, k;
int h[N][M], t[N][M];
int dp[N][M];
int q[M]; //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
while(scanf("%d%d%d", &n, &m, &k), n+m+k){
n++;
for(int i = ; i <= n; i++){
for(int j = ; j <= m ;j++){
scanf("%d",h[i]+j);
h[i][j] += h[i][j-];
}
}
for(int i = ; i <= n; i++){
for(int j = ; j <= m ;j++){
scanf("%d",t[i]+j);
t[i][j] += t[i][j-];
}
} for(int i = ; i <= n; i++){
#define maintain(diff) while(hd<rl && diff(j,q[hd]) > k) hd++;
#define inst(val) while(hd<rl && val(q[rl-1]) <= val(j)) rl--; q[rl++] = j;
int hd = , rl = ;
#define dis(x) (t[i][x])
#define lval(x) (dp[i-1][x] - h[i][x])
#define ldis(j,k) dis(j)-dis(k)
for(int j = ; j <= m; j++){
inst(lval)
maintain(ldis)
dp[i][j] = lval(q[hd])+h[i][j];
}
hd = rl = ;
#define rval(x) (dp[i-1][x] + h[i][x])
#define rdis(j,k) dis(k)-dis(j)
for(int j = m; j >= ; j--){
inst(rval)
maintain(rdis)
dp[i][j] = max(dp[i][j],rval(q[hd])-h[i][j]);
}
}
int ans = ;
for(int j = ; j <= m; j++){
ans = max(ans,dp[n][j]);
}
printf("%d\n",ans);
}
return ;
}

最新文章

  1. C# i=0;i=i++,i的值是多少?
  2. 使用Fiddler关于“由于目标计算机积极拒绝,无法连接。”的解决方案
  3. mysql 查询当天的数据库
  4. grpc例子
  5. Java--Exchanger用于进行线程间的数据交换
  6. IOS开发UI基础UIControl事件
  7. 20145227《Java程序设计》课程总结
  8. dede的pagelist标签的listsize数字属性详解(借鉴)
  9. Java多线程之阻塞I/O如何中断
  10. rails使用 rake db:migrate 提示 Migrations are pending; run &#39;rake db:migrate RAILS_ENV=development&#39; to resolve this issue.
  11. iOS第三方地图-百度地图定位的封装
  12. 【风马一族_Java】在某个范围内,找出具有水仙花特征的数字
  13. ACM1019_最大公倍数
  14. 2017-02-19C#基础 - 数据类型与类型转换
  15. python 题库1
  16. python 字典获取最大和最小的value
  17. 《FDTD electromagnetic field using MATLAB》读书笔记之 Figure 1.14
  18. NSLayout​Constraint
  19. GOF对Builder模式的定义(转载)
  20. 决Ubuntu使用`make menuconfig`配置Linux 内核时,出现缺少&#39;ncurses-devel&#39;库支持。

热门文章

  1. Mybatis中文模糊查询,数据库中有数据,但无结果匹配
  2. static及静态方法
  3. java排序算法(持续更新)
  4. 我的省选 Day -14
  5. Java 8 Optional类使用的实践经验
  6. spring容器中的beanName
  7. Scrapy(爬虫应用框架)安装配置
  8. E. Beautiful Subarrays 字典树
  9. POJ 3321 Apple Tree DFS序 + 树状数组
  10. (三)Redis两种持久化方案