hdu4374One hundred layer (DP+单调队列)
http://acm.hdu.edu.cn/showproblem.php?pid=4374
去年多校的题 今年才做 不知道这一年都干嘛去了。。
DP的思路很好想 dp[i][j] = max(dp[i-1][g]+sum[i][j]-sum[i][g-1],dp[i][j]) abs(g-j)<=t 不过复杂度是相当高的 所以呢 就出现了个单调队列 把它优化下
所谓的单调队列其实也就是一队列 始终保持着队头是最大的 若满足不了距离的条件 队头+1 队尾始终保持更新 让满足的了距离而且比队里的更大的元素进来
。。因为一初始化错了 WA了十多次啊 注意:有负数
#include <iostream>
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define N 105
#define M 10005
#define LL __int64
int a[N][M],que[M];
int dp[N][M];
int s1[N][M],s2[N][M];
int main()
{
int i,j,n,m,x,t,str,end;
while(cin>>n>>m>>x>>t)
{
memset(dp,,sizeof(dp));
memset(s1,,sizeof(s1));
memset(s2,,sizeof(s2));
for(i = ; i <= n; i++)
for(j = ; j <= m ; j++)
{
scanf("%d",&a[i][j]);
s1[i][j] = s1[i][j-]+a[i][j];
}
for(i = ; i <= n ;i++)
for(j = m ; j >= ; j--)
s2[i][j] = s2[i][j+]+a[i][j];
for(i = x ; i>=&&i>=x-t ; i--)
dp[][i] = s1[][x]-s1[][i-];
for(i = x ; i <= m&&i<=x+t ; i++)
dp[][i] = s2[][x]-s2[][i+];
for(i = ; i <= n ; i++)
{
str = ;end=;
for(j = ;j <= m ; j++)
{
while(str<end&&dp[i-][j]-s1[i][j-]>dp[i-][que[end-]]-s1[i][que[end-]-])
end--;
que[end++] = j;
dp[i][j] = max(dp[i][j],dp[i-][que[str]]-s1[i][que[str]-]+s1[i][j]);
if(j-que[str]>=t)
str++;
}
str = ;end=;
for(j = m ; j >= ; j--)
{
while(str<end&&dp[i-][j]-s2[i][j+]>dp[i-][que[end-]]-s2[i][que[end-]+])
end--;
que[end++] = j;
dp[i][j] = max(dp[i][j],dp[i-][que[str]]-s2[i][que[str]+]+s2[i][j]);
if(que[str]-j>=t)
str++;
}
}
int maxz=dp[n][];
for(i = ; i <= m ; i++)
maxz = max(maxz,dp[n][i]);
cout<<maxz<<endl;
}
return ;
}
hdu4374One hundred layer (DP+单调队列)的更多相关文章
- HDU 4374 One hundred layer(单调队列DP)
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=116242#problem/E 题意:差不多就是男人勇下百层的游戏.从第一层到最 ...
- [poj3017] Cut the Sequence (DP + 单调队列优化 + 平衡树优化)
DP + 单调队列优化 + 平衡树 好题 Description Given an integer sequence { an } of length N, you are to cut the se ...
- DP+单调队列 codevs 1748 瑰丽华尔兹(还不是很懂具体的代码实现)
codevs 1748 瑰丽华尔兹 2005年NOI全国竞赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 题目描述 Descripti ...
- 习题:烽火传递(DP+单调队列)
烽火传递[题目描述]烽火台又称烽燧,是重要的防御设施,一般建在险要处或交通要道上.一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息:夜晚燃烧干柴,以火光传递军情.在某两座城市之间有n个烽火台,每个烽火台 ...
- (noip模拟二十一)【BZOJ2500】幸福的道路-树形DP+单调队列
Description 小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一同晨练来享受在一起的时光. 他们画出了晨练路线的草图,眼尖的小T发现可以用树来描绘这个草图. ...
- 3622 假期(DP+单调队列优化)
3622 假期 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 黄金 Gold 题目描述 Description 经过几个月辛勤的工作,FJ决定让奶牛放假.假期可以在1-N天内任意选择 ...
- HDU 4374 One hundred layer DP的单调队列优化
One hundred layer Problem Description Now there is a game called the new man down 100th floor. The ...
- bzoj2500: 幸福的道路(树形dp+单调队列)
好题.. 先找出每个节点的树上最长路 由树形DP完成 节点x,设其最长路的子节点为y 对于y的最长路,有向上和向下两种情况: down:y向子节点的最长路g[y][0] up:x的次长路的g[x][1 ...
- URAL 1427. SMS(DP+单调队列)
题目链接 我用的比较传统的办法...单调队列优化了一下,写的有点搓,不管怎样过了...两个单调队列,存两个东西,预处理一个标记数组存... #include <iostream> #inc ...
随机推荐
- CSS3几个速记标签2
@font-face:CSS3允许使用自己的字体,用户会自动下载 语法:@font-face{font-family:---:src:url(---)} 如果要使用粗体,必须新添加另一 ...
- 生产者-消费者模型的3种Java实现:synchronized,signal/notifyAll及BlockingQueue
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3555111.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- N的N次方(高校俱乐部)
最近一直在刷字符串和线段树,也越来越少玩高校俱乐部,无聊看到一题N的N次方的问题,脑海中各种打表就涌现出来了. 弄了不一会儿,就写完了,马上提交,但是系统好像出了问题,提示"哦哦,出了点状况 ...
- HTML5之 离线数据存储
--- Storage接口 无论是sessionStorage还是localStorage 属性/方法 返回值 描述 ----------------------------------------- ...
- away3d打包到IOS锯齿问题解决办法
很多ios设备是高清屏,一个像素顶普通设备四个像素.从这点上也许可以入手解决. 先把<requestedDisplayResolution>high</requestedDispla ...
- Linux DNS 设置失败
在执行 yum install gcc 时 发现下载失败 ping www.baidu.com ping 不通 ping 百度的IP:220.181.111.188却能ping 通 由此证明是DNS的 ...
- QML鼠标事件实现变色矩形
QML支持鼠标事件处理,我们可以利用这个来实现一个变色矩形示例,代码如下: import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick. ...
- glDatePicker-2.0 日历插件
昨天用的日历插件在绑定数据的时候出现了问题,所以今天换了这个glDatePicker-2.0 日历插件 这是我修改后的样式 默认样式是这样的. 我的代码 index.html <!doctype ...
- Linux下的ntp时钟同步问题
前段时间,项目中有个需求,需要将linux和windows的时间进行同步,网上也有很多类似时钟同步的帖子,大致类似:不过本次的linux的机器有点特殊,没有service命令,而且要求在另一台suse ...
- C#使用oledb方式将excel数据导入到datagridview后数据被截断为 255 个字符
问题描述:在使用oledb方式将excel数据导入到datagridview中,在datagridview单元格中的数据没有显示全,似乎只截取了数据源中的一段 解决方案:1.关于该问题,微软官方答案: ...