HDU 5696 RMQ+滑窗
区间的价值
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 844 Accepted Submission(s): 398
一个区间左端点在L
,右端点在R
,那么该区间的长度为(R−L+1)
。
现在聪明的杰西想要知道,对于长度为k
的区间,最大价值的区间价值是多少。
当然,由于这个问题过于简单。
我们肯定得加强一下。
我们想要知道的是,对于长度为1∼n
的区间,最大价值的区间价值分别是多少。
样例解释:
长度为1
的最优区间为2−2
答案为6∗6
长度为2
的最优区间为4−5
答案为4∗4
长度为3
的最优区间为2−4
答案为2∗6
长度为4
的最优区间为2−5
答案为2∗6
长度为5的最优区间为1−5
答案为1∗6
第一行一个数n(1≤n≤100000)
。
第二行n
个正整数(1≤ai≤109)
,下标从1
开始。
由于某种不可抗力,ai
的值将会是1∼109
内<b style="color:red;">随机产生</b>的一个数。(除了样例)
行,第i
行表示区间长度为i
的区间中最大的区间价值。
#include<bits/stdc++.h>
#define ll __int64
using namespace std;
ll f[][];
ll a[];
ll l[];
ll r[];
ll n;
ll ans[];
ll aa[];
void rmq_init()
{
for(int j=;(<<j)<=n;j++)
for(int i=;i+(<<(j))-<=n;i++)
{
f[i][j]=max(f[i][j-],f[i+(<<(j-))][j-]);
}
}
int rmq(ll aa,ll bb)
{
ll k=;
ll ans1;
while((<<(k+))<=bb-aa+)
k++;
ans1=max(f[aa][k],f[bb-(<<k)+][k]);
return ans1;
} int main()
{
while(scanf("%I64d",&n)!=EOF)
{
for(int i=;i<=n;i++)
{
scanf("%I64d",&a[i]);
f[i][]=a[i];
}
rmq_init();
a[]=-;
a[n+]=-;
l[]=;
for(int i=;i<=n;i++)
{
int temp=i-;
while(a[temp]>=a[i])
temp=l[temp]-;
l[i]=temp+;
}
r[n]=n;
for(int i=n-;i>=;i--)
{
int temp=i+;
while(a[temp]>=a[i])
temp=r[temp]+;
r[i]=temp-;
}
memset(ans,,sizeof(ans));
memset(aa,,sizeof(aa));
for(int i=;i<=n;i++)
{
ll mm=rmq(l[i],r[i]);
ans[r[i]-l[i]+]=max(ans[r[i]-l[i]+],mm*a[i]);
}
for(int i=n;i>=;i--)
aa[i]=max(ans[i],aa[i+]);
for(int i=;i<=n;i++)
printf("%I64d\n",aa[i]);
}
return ;
}
HDU 5696 RMQ+滑窗的更多相关文章
- HDU 6319.Problem A. Ascending Rating-经典滑窗问题求最大值以及COUNT-单调队列 (2018 Multi-University Training Contest 3 1001)
2018 Multi-University Training Contest 3 6319.Problem A. Ascending Rating 题意就是给你长度为k的数列,如果数列长度k<n ...
- 【10.7校内测试】【队列滑窗】【2-sat】【贪心+栈二分+线段树(noip模拟好题)】【生日祭!】
比较好想的一道题,直接用队列滑窗,因为扫一遍往队列里加东西时,改变的只有一个值,开桶储存好就行了! #include<bits/stdc++.h> using namespace std; ...
- matlab核函数与滑窗
在处理图像时,为了提取特征,经常用各种核函数和图像进行卷积,其实就是通过一个矩阵以滑窗的形式与原图像进行点乘求和,可以看作对一个像素和附近像素进行了加权平均. 比如经常用3x3的近似高斯卷积核 0 1 ...
- TCP系列31—窗口管理&流控—5、TCP流控与滑窗
一.TCP流控 之前我们介绍过TCP是基于窗口的流量控制,在TCP的发送端会维持一个发送窗口,我们假设发送窗口的大小为N比特,网络环回时延为RTT,那么在网络状况良好没有发生拥塞的情况下,发送端每个R ...
- 计蒜客 A2232.程序设计:蒜厂年会-单调队列(双端队列(STL deque)实现)滑窗维护最小前缀和
程序设计:蒜厂年会 问答问题反馈 只看题面 16.79% 1000ms 262144K 在蒜厂年会上有一个抽奖,在一个环形的桌子上,有 nn 个纸团,每个纸团上写一个数字,表示你可以获得多少蒜币. ...
- [poj 3261]后缀数组+滑窗最小值
题目链接:http://poj.org/problem?id=3261 这个是可以交叉的重复串,所以用height就可以了,但是题目说让重复k次以上,也就是直接做一个k-1长度的滑窗最小值,从这些最小 ...
- UVA 1619/POJ2796 滑窗算法/维护一个单调栈
Feel Good Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 12409 Accepted: 3484 Case T ...
- 集训第四周(高效算法设计)K题 (滑窗问题)
UVA 11572 唯一的雪花 题意:给你从1到n的数组,要求求得其中的最长连续不重复子序列,经典的滑窗问题,方法是维护一个窗口,设置左框和右框,然后不断的进行维护和更新 方法一: #include& ...
- TCP的可靠传输机制(简单好理解:分段与流,滑窗,连接,流量控制,重新发送,堵塞控制)
TCP的几大模块:分段与流,滑窗,连接,流量控制,重新发送,堵塞控制. 1.checksum:在发送TCP报文的时候,里面的信息可能会因为环境的问题,发送变化,这时,接收信号的时候就需要通过check ...
随机推荐
- Ubuntu使用问题解决办法
http://blog.csdn.net/ll_0520/article/details/6077913
- JQuery从服务器端取得数据绑定到dropdownlist(select)中
http://blog.csdn.net/gaofang2009/article/details/5840783 http://www.cnblogs.com/Mac_Hui/archive/2010 ...
- Bootstrap 提示工具(Tooltip)插件的事件
事件 下表列出了提示工具(Tooltip)插件中要用到的事件.这些事件可在函数中当钩子使用. 事件 描述 实例 show.bs.tooltip 当调用 show 实例方法时立即触发该事件. $('#m ...
- JavaScript 交换两个变量的值
方法一 let a = "a", b = "b"; console.log(a, b); let t = a; a = b; b = t; console.lo ...
- linux下安装redis和使用
http://www.linuxidc.com/Linux/2014-05/101979.htm
- Freemaker基于word模板动态导出汇总整理
Freemaker基于word模板动态导出汇总整理 一.使用的jar包: 二.Word模板动态导出的基本思路: 1.首先通过自己在word中创建好需要导出的word文本+表格的模板,模板中需要填写内容 ...
- ngin负载均衡集群(一)
一.nginx负载均衡集群介绍: 1.反向代理与负载均衡概念简介严格地说, nginx仅仅是作为 Nginx Proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果,所以本文称之 ...
- jQuery实现复选框的全选、反选功能
<ul id="list"> <li><label><input type="checkbox" value=&quo ...
- React学习记录一
半路出家直接上手React,其实有点吃力,所以开始研究create-react-app,从这里下手吧. create-react-app 官方网站:https://github.com/faceboo ...
- oracle 11gR2 for win7旗舰版64安装以及连接plsql和NaviCat(win64_11gR2_database) (2012-12-31-bd 写的日志迁移
先到oracle官网http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html下载必要数 ...