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;
}

  

转载于:https://www.cnblogs.com/Running-Time/p/5497935.html

2012 Multi-University #8相关推荐

  1. 钮扣电池电压电量_纽扣厂

    钮扣电池电压电量 S. is a designer and works at the button factory. Despite its scary look, S. goes there eve ...

  2. 学术与应用的碰撞,精准医疗和生物医药大数据的盛宴

    2016年12月8-10日,BDTC 2016 中国大数据技术大会将在北京新云南皇冠假日酒店隆重举办.本届BDTC 2016为期三天,聚焦行业最佳实践,数据与应用的深度融合,关注热门技术在行业中的实践 ...

  3. 程序员求职之道(《程序员面试笔试宝典》)之面试笔试技巧?

    目录(?)[-] 不打无准备之仗 如何获取求职信息 如何制作一份受用人单位青睐的简历 如何高效地网申简历 从容应对 如何进行自我介绍 你对我们公司有什么了解 如何应对自己不会回答的问题 签约这点事 风 ...

  4. 程序员求职攻略(《程序员面试笔试宝典》)之面试笔试技巧?

    不是看了本C语言编程书籍,就可以说精通C语言,会写一句hello world,就可以自称程序员,程序员是一种职业,更是一种精神.他们天资聪颖,不拘小节:他们个性十足,幽默风趣:他们工作努力,任劳任怨. ...

  5. 宾夕法尼亚的第一台计算机,宾夕法尼亚大学博士申请 - 世界上第一台计算机诞生与美国宾夕法尼亚大学,这台计算机是什么,只能算数字吗?(也就是几加几几乘几什...

    宾夕法尼亚大学博士申请 - 世界上第一台计算机诞生与美国宾夕法尼亚大学,这台计算机是什么,只能算数字吗?(也就是几加几几乘几什,1. 世界上第一台计算机诞生与美国宾夕法尼亚大学,这台计算机是什么,只能 ...

  6. 网络流量数据集(PCAP)

    汇总 https://www.test404.com/post-1494.html 部分转自https://blog.csdn.net/answer3lin/article/details/86480 ...

  7. 计算机应用技术专业英语作文,计算机应用专业英语简历范文

    计算机应用专业英语简历范文 Personal profiles: Name: YJBYS Gender: Female Nationality: Han Birthplace: Shandong Da ...

  8. [我们是这样理解语言的-2]统计语言模型

    [我们是这样理解语言的-2]统计语言模型 2015/02/28 搜索技术.自然语言处理 LM.n-gram.NLP.统计语言模型.自然语言处理.语言模型 fandywang 记得最早学习语言模型是在研 ...

  9. 韦森:哈耶克大战凯恩斯的论战(一)

    序言 <通论>.<通往奴役之路>,这些思想的两位奠定者-约翰·梅纳德·凯恩斯和弗里德里希·冯·哈耶克,隔着一道巨大的深渊,凝视着彼此.这道深渊,拉开了我们这个时代最轰轰烈烈的经 ...

  10. 那一年:哈耶克大战凯恩斯

    序言 <通论>.<通往奴役之路>,这些思想的两位奠定者-约翰·梅纳德·凯恩斯和弗里德里希·冯·哈耶克,隔着一道巨大的深渊,凝视着彼此.这道深渊,拉开了我们这个时代最轰轰烈烈的经 ...

最新文章

  1. 是时候开始使用JavaScript严格模式了怎样启用javascri
  2. 卸载或重新安装Redis集群
  3. 006 技能数组分析和代码编写
  4. 生物信息之ME, HMM, MEMM, CRF
  5. H桥电机驱动原理与应用
  6. CodeForces - 1141CPolycarp Restores Permutation搜索+剪枝
  7. linux系统部署war包,查看tomcat日志
  8. websphere一直安装部署_WebSphere集群安装配置及部署应用说明
  9. codeforces679C Bear and Square Grid(dfs优化)
  10. PostgreSQL备份之omniPITR
  11. 初识Flink广播变量broadcast
  12. 观察者模式-对象行为型
  13. Maven搭建多模块企业级项目+SSM框架搭建
  14. java 编写无状态代码,一种真正实现RMI无状态化的方法续:JVM源码修改步骤
  15. linux 卡在grub_关于linux开机进入grub问题的解决方法
  16. python help帮助文档
  17. 打开一个php网页出现2个ip,php根据ip地址查地区
  18. 地球人来源2【地底爬虫人访谈】
  19. 【单例模式、多例模式、工厂模式和枚举】
  20. 大学网课查题接口平台

热门文章

  1. Struts2 拦截器: 拦截器与过滤器区别
  2. 线段树专辑——pku 3667 Hotel
  3. 企业生产经营相关英文及缩写之(11)--Genenic 普通书写
  4. 2013年国家计算机一级考试试题,2013年计算机一级的考试试题.doc
  5. matlab z变换离散化_用C++编写一个简单的光栅化渲染器:3D篇
  6. php7过滤,PHP7过滤unserialize()
  7. python随机数比大小_1到范围内的随机数系统最大大小总是1模2^10
  8. android sdk 2.9.5.0,如何找到问题Android SDK 3.0错误:(9,5)错误:资源android:attr/colorError未找到...
  9. mac 杀掉占用某个端口的进程
  10. Cannot access repo1 (http://repo1.maven.org/maven2) in offline mode and the