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