51nod——2476 小b和序列(预处理 思维)
2024-08-29 13:57:12
对于每一个元素,预处理出它作为最小值,两边可以作用到的最大位置。比如下标∈[0,8]的这个数组:1 8 6 2 5 4 3 8 7,1可以作用到所有区间,2可以作用到区间[1,8],第一个8可以作用到[1,7]。也就是说从两边分别找到第一个大于等于这个元素的位置,然后标记,其实就是找最宽的区间长度。可能左边更宽也可能右边更宽,对所有元素的max(a[i]*(i-l[i])),a[i]*(r[i]-i)) 求max就是答案了。
#include <bits/stdc++.h>
using namespace std;
#define maxn 50050
int a[maxn],l[maxn],r[maxn];
int main(){
std::ios::sync_with_stdio();
cin.tie();
int n; cin>>n;
for(int i=;i<n;i++) cin>>a[i]; for(int i=;i<n;i++){//预处理 找到可以以a[i]为最小值的区间
int ll=,rr=n-;
while(a[ll]<a[i]) ll++;
l[i]=ll;
while(a[rr]<a[i]) rr--;
r[i]=rr;
}
int maxx=; for(int i=;i<n;i++)
maxx=max(max(maxx,a[i]*(i-l[i])),a[i]*(r[i]-i));
cout<<maxx<<endl;
return ;
}
最新文章
- 关于JavaScript设计模式(一)
- oracle 函数写法 总结
- storm坑之---传递对象
- struts2配置的ajax参数传递方法
- 在xml文件中写入&;符号时需要对其进行转义
- duplicate symbol _OBJC_METACLASS_$ 报错记录
- 【BZOJ 1491】 [NOI2007]社交网络
- HALCON 简介
- Js--AJAX的小知识(一):ajax的五种状态
- 【&#9733;】微信之于QQ的市场哲学
- 当map遇到parseInt
- [转] ssh穿透??未验证。。。
- Openstack(十七)部署快存储cinder
- HDU 3533 Escape(BFS+预处理)
- Appium使用Python运行appium测试的实例
- C++学习笔记--异常简介
- (转载)一位资深程序员大牛给予Java初学者的学习建议
- VUE通过索引值获取数据不渲染的问题
- SpringMVC简单的文件上传
- 8-----BBS论坛