DP+单调队列优化 E One hundred layer

题意:n*m的矩形,从第一层x位置往下走,每一层都可以往左或往右移动最多k步再往下走,问走到n层时所走路径的最大值.

分析:定义,,注意到max里的东西与j无关,可以定义单调队列维护的最值,注意t的约束条件.往右的情况类似.

#include <bits/stdc++.h>

const int N = 1e2 + 5;
const int M = 1e4 + 5;
const int INF = 0x3f3f3f3f;
int dp[N][M];
int a[N][M];
int sum[M];
int n, m, x, t;
struct Node {
int v, id;
}; int main() {
while (scanf ("%d%d%d%d", &n, &m, &x, &t) == 4) {
for (int i=1; i<=n; ++i) {
for (int j=1; j<=m; ++j) {
scanf ("%d", &a[i][j]);
}
}
std::deque<Node> dque;
memset (dp, -INF, sizeof (dp));
dp[1][x] = a[1][x];
for (int i=x-1; i>=1 && i>=x-t; --i) {
dp[1][i] = dp[1][i+1] + a[1][i];
}
for (int i=x+1; i<=m && i<=x+t; ++i) {
dp[1][i] = dp[1][i-1] + a[1][i];
}
for (int i=2; i<=n; ++i) {
sum[0] = 0;
dque.clear ();
for (int j=1; j<=m; ++j) {
sum[j] = sum[j-1] + a[i][j];
while (!dque.empty () && dque.front ().id < j - t) {
dque.pop_front ();
}
int tv = dp[i-1][j] - sum[j-1];
while (!dque.empty () && dque.back ().v < tv) {
dque.pop_back ();
}
dque.push_back ((Node) {tv, j});
dp[i][j] = dque.front ().v + sum[j];
}
sum[m+1] = 0;
dque.clear ();
for (int j=m; j>=1; --j) {
sum[j] = sum[j+1] + a[i][j];
while (!dque.empty () && dque.front ().id > j + t) {
dque.pop_front ();
}
int tv = dp[i-1][j] - sum[j+1];
while (!dque.empty () && dque.back ().v < tv) {
dque.pop_back ();
}
dque.push_back ((Node) {tv, j});
dp[i][j] = std::max (dp[i][j], dque.front ().v + sum[j]);
}
}
int ans = dp[n][1];
for (int i=2; i<=m; ++i) {
ans = std::max (ans, dp[n][i]);
}
printf ("%d\n", ans);
}
return 0;
}

  

2012 Multi-University #8的更多相关文章

  1. 针对于网络安全领域中基于PCAP流量的数据集

    网络安全领域中基于PCAP流量的数据集 MAWI Working Group Traffic Archive URL:http://mawi.wide.ad.jp/mawi/ CIC dataset ...

  2. Parallel NetCDF 简介

    Parallel NetCDF API 所有C接口前加ncmpi前缀,Fortran接口前加nfmpi前缀 函数返回整数 NetCDF 状态变量 1. Variable and Parameter T ...

  3. 视觉中的深度学习方法CVPR 2012 Tutorial Deep Learning Methods for Vision

    Deep Learning Methods for Vision CVPR 2012 Tutorial  9:00am-5:30pm, Sunday June 17th, Ballroom D (Fu ...

  4. Google Interview University - 坚持完成这套学习手册,你就可以去 Google 面试了

    作者:Glowin链接:https://zhuanlan.zhihu.com/p/22881223来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 原文地址:Google ...

  5. SQL Server 2012 内存管理 (memory management) 改进

    SQL Server 2012 的内存管理和以前的版本相比,有以下的一些变化. 一.内存分配器的变化 SQL Server 2012以前的版本,比如SQL Server 2008 R2等, 有sing ...

  6. 西安理工大学 李爱民 Xi'an University of Technology, Aimin Li

    李爱民-西安理工大学计算机科学与工程学院 ● 简介(Introduction)-> 李爱民(Aimin Li),男,湖北随州人,西安电子科学大学博士(PhD),中共党员.中国计算机学会会员,CS ...

  7. 微软BI SSRS 2012 Metro UI Win 8 风格的报表课程案例全展示

    开篇介绍 微软BI SSRS 2012 Metro UI 高端报表视频教程 (http://www.hellobi.com/course/15)课程从2014年6月开始准备,于2014年9月在 天善B ...

  8. Online handwriting recognition using multi convolution neural networks

    w可以考虑从计算机的“机械性.重复性”特征去设计“低效的”算法. https://www.codeproject.com/articles/523074/webcontrols/ Online han ...

  9. Patch multi versions of windows via Power shell

    Patch multi versions of windows via Power shell $version = Get-WmiObject -Class Win32_OperatingSyste ...

  10. Weblogic多数据源(Multi Data Sources)应用实践

    原创 2012年03月29日 10:55:28 标签: weblogic / 数据库 / 负载均衡 / 数据中心 / jdbc / 应用服务器   大型系统在进行数据库部署时,常常会分为主数据应用中心 ...

随机推荐

  1. <<< javascript地址栏,代码

    不伤及服务器,可以用来测试项目效果 修改网页.不修改服务器端任何网页页面 javascript:document.body.contentEditable='true';document.design ...

  2. 轻松理解spring IOC

    spring IOC(Inversion of control)即控制反转 概念:一,spring框架的核心之一 二,控制权由对象本身转向容器:由容器根据配置文件去创建实例并创建各个实例之间的依赖关系 ...

  3. 多线程之GCD

    什么是GCD Grand Central Dispatch 是Apple开发的一种多核编程技术.主要用于优化应用程序以支持多核处理器以及其他多对称处理系统TA会自动管理线程的生命周期(创建线程.调度任 ...

  4. Go - 路径、目录名、包名、文件名

    先看一个示例: 1.目录结构 bin pkg src pk1 pk2 function1.go function2.go index.go 2.function1.go 文件内容: package p ...

  5. css-单位%号-background-size-background-position-遁地龙卷风

    (-1)写在前面 我用的是chrome49,这篇是为后续做准备.重要性的调整以及毕业资料的整体导致最近没看JQuery和H5特效,以后只能晚上看了. (0)准备 div长宽都为300px,我们一张大小 ...

  6. Site Not Found

    http://moofx.it/ Site Not Found http://www. suchso.com /code/ace/gallery.html http://demo.rocketthem ...

  7. npm start 作用

    在配置phonecat项目时需要运行npm start在本地配置一个服务器环境,npm start首先会安装一系列的必要程序,这些程序依赖package.json中的内容,package.json中的 ...

  8. composer 安装提示 PHP Warning: readfile(): SSL operation failed with code 1

    这是php设置openssl 没有指定cacert.pem (证书) 第一步:下载 cacert.pem 文件下载地址 https://curl.haxx.se/docs/caextract.html ...

  9. 及时取消代码中的AsyncTask

    在一个Activity页面,如果发起了AsyncTask任务,然后页面离开/销毁了,此时如果doInBackground没执行完,会有两个问题: 1, AsyncTask白白消耗资源,结果已经用不上了 ...

  10. source和./的区别

    熟悉Linux的朋友常使用·bash·.·sh·.·source·.·.·,但却并非每位朋友都知道其中的区别.我们通过下面一幅图来为大家说明白.