Vijos1834 NOI2005 瑰丽华尔兹 动态规划 单调双端队列优化
设dp[t][x][y]表示处理完前t个时间段,钢琴停留在(x,y)处,最多可以走多少个格子
转移时只需逆着当前倾斜的方向统计len个格子(len为时间区间的长度,len=t-s+1),如果遇到障碍就中断
转移过程可以用单调非递增的双端队列优化
#include <cstdio> #include <cstring> #include <algorithm> ; const int inf=0x3f3f3f3f; ][maxN][maxN]; char map[maxN][maxN]; int deqv[maxN]; int deqn[maxN]; int head,tail; int N,M,x,y,K; inline void resetDeq() { head=-; tail=; } inline void popDeq(int n,int len) { if(tail<head && n-deqn[tail]>len) ++tail; } inline void pushDeq(int v,int n) { while(head>=tail && v>deqv[head]) --head; deqv[++head]=v; deqn[head]=n; } inline int maxDeq() { if(head>=tail) return deqv[tail]; else return -inf; } int main() { scanf("%d%d%d%d%d",&N,&M,&x,&y,&K); ;i<=N;i++) scanf(); memset(dp,0xc0,sizeof(dp)); dp[][x][y]=; int s,t,dir; int len; while(K--) { scanf("%d%d%d",&s,&t,&dir); len=t-s+; ) ;i<=N;i++) { resetDeq(); ;j<=M;j++) { if(map[i][j]=='.') { popDeq(j,len); dp[][i][j]=std::max(dp[][i][j],maxDeq()+j); pushDeq(dp[][i][j]-j,j); } ][i][j]=-inf; } } } ) ;i<=N;i++) { resetDeq(); for(int j=M;j;j--) { if(map[i][j]=='.') { popDeq(M-j,len); dp[][i][j]=std::max(dp[][i][j],maxDeq()+M-j); pushDeq(dp[][i][j]-M+j,M-j); } ][i][j]=-inf; } } } ) ;j<=M;j++) { resetDeq(); ;i<=N;i++) { if(map[i][j]=='.') { popDeq(i,len); dp[][i][j]=std::max(dp[][i][j],maxDeq()+i); pushDeq(dp[][i][j]-i,i); } ][i][j]=-inf; } } } ) ;j<=M;j++) { resetDeq(); for(int i=N;i;i--) { if(map[i][j]=='.') { popDeq(N-i,len); dp[][i][j]=std::max(dp[][i][j],maxDeq()+N-i); pushDeq(dp[][i][j]+i-N,N-i); } ][i][j]=-inf; } } } memcpy(dp[],dp[],])); } int ans=-inf; ;i<=N;i++) ;j<=M;j++) ans=std::max(ans,dp[][i][j]); printf("%d\n",ans); ; }
Vijos1834 NOI2005 瑰丽华尔兹 动态规划 单调双端队列优化的更多相关文章
- poj 3259 Wormholes : spfa 双端队列优化 判负环 O(k*E)
/** problem: http://poj.org/problem?id=3259 spfa判负环: 当有个点被松弛了n次,则这个点必定为负环中的一个点(n为点的个数) spfa双端队列优化: 维 ...
- 关于SPFA的双端队列优化
7.11 Update 我做题的时候发现这样写会RE 因为在使用双端队列优化SPFA的时候 在将一个点加入队列的时候,如果队列已经空了 那么一旦出现dis[Q.front()]就会RE 可以这样修改 ...
- 2018.09.10 bzoj1499: [NOI2005]瑰丽华尔兹(单调队列优化dp)
传送门 单调队列优化dp好题. 这题其实很简单. 我们很容易想到一个O(T∗n∗m)" role="presentation" style="position: ...
- bzoj1499: [NOI2005]瑰丽华尔兹&&codevs1748 单调队列优化dp
这道题 网上题解还是很多很好的 强烈推荐黄学长 码风真的好看 神犇传送门 学习学习 算是道单调队列优化dp的裸题吧 #include<cstdio> #include<cstring ...
- 洛谷 P2254 [NOI2005]瑰丽华尔兹(单调栈优化DP)
题目描述 不妨认为舞厅是一个N行M列的矩阵,矩阵中的某些方格上堆放了一些家具,其他的则是空地.钢琴可以在空地上滑动,但不能撞上家具或滑出舞厅,否则会损坏钢琴和家具,引来难缠的船长.每个时刻,钢琴都会随 ...
- BZOJ1499:[NOI2005]瑰丽华尔兹(DP,单调队列)
Description 你跳过华尔兹吗?当音乐响起,当你随着旋律滑动舞步,是不是有一种漫步仙境的惬意?众所周知,跳华尔兹时,最重要的是有好的音乐.但是很少有几个人知道,世界上最伟大的钢琴家一生都漂泊在 ...
- BZOJ1499 [NOI2005]瑰丽华尔兹 【单调队列优化dp】
题目 你跳过华尔兹吗?当音乐响起,当你随着旋律滑动舞步,是不是有一种漫步仙境的惬意?众所周知,跳华尔兹时,最重要的是有好的音乐.但是很少有几个人知道,世界上最伟大的钢琴家一生都漂泊在大海上,他的名字叫 ...
- 洛谷P2254 [NOI2005]瑰丽华尔兹(单调队列)
传送门 题解 大概就是设$dp[i][x][y]$表示在第$i$个时间段,在$(x,y)$时的最大滑动距离 然后转移是$dp[i][x][y]=max(dp[i-1][x][y],dp[i][x'][ ...
- LuoguP2254 [NOI2005]瑰丽华尔兹 (单调队列优化DP)(用记忆化过了。。。)
记忆化 #include <cstdio> #include <iostream> #include <cstring> #include <algorith ...
随机推荐
- Linux Shell编程(13)——数字常量
除非一个数字有特别的前缀或符号,否则shell脚本把它当成十进制的数.一个前缀为0的数字是八进制数.一个前缀为0x的数字是十六进制数.一个数用内嵌的#来求值则看成BASE#NUMBER(有范围和符号限 ...
- Storm On Docker
1. 安装Docker (1)确认系统版本 sudo lsb_release -a 注:如果提示找不到命令“lsb_release”,使用“yum install redhat-lsb ...
- Rest中的XML与JSON的序列化与反序列化
#region 获取XML的序列化和反序列化 /// <summary> /// 对象进行序列化生成XML /// </summary> /// <typeparam n ...
- 【索引】UML学习笔记
行为图 交互图 交互概览图 时间图 顺序图 通信图 活动图 状态及图 用例图 结构图 包图 类图 对象图 组件图 部署图 组合结构图
- Python中AND-OR的用法
学习Python中的lambda函数的时候,才发现原来Python中的AND和OR还可以有一些别的用法.Python中的布尔逻辑计算的结果并非返回布尔值,而是返回它们相互之间的某一个.文章的部分例子来 ...
- 开源存储之ceph
小记,曾经的很多单骑,赵子龙,杨再兴,..............为大将者所应用的胆识和气度,值得敬仰! 名师出高徒啊, 周侗北宋末年之武术大师,相传为三国姜维的传人(真实性ruiy哥就不考察了哈), ...
- Eclipse 为jar包加入 Java Source和Javadoc(如何向Eclipse中导入源码和doc)
: 当我们在MyEclipse中加入Struct,只是引入了jar包,这时使用jar包里面的类,是无法看到源码的,看到的只是这样 是反编译后的一些东西 加入源码 那么如果看到源码呢,就需要导入了 找到 ...
- Parallel.Foreach的并发问题解决方法-比如爬虫WebClient
场景五:线程局部变量 Parallel.ForEach 提供了一个线程局部变量的重载,定义如下: public static ParallelLoopResult ForEach<TSource ...
- div页面居中(上下左右)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...
- .NET开源组件
.NET模型验证组件FluentValidation 基于LINQ表达式方法链Fluent接口验证组件:FluentValidation for .NET http://www.cnblogs.com ...