UVA
来源:互联网 发布:淘宝外卖网址 编辑:程序博客网 时间:2024/06/05 08:05
题目网址点击打开链接
;
、
对于某个最小值ai来说,所选的区间应该尽量大,直到再选就不能保证ai是最小值的时候停止。
在扫描过程中维护一个向前延伸的最大位置,扩展的时候注意传递性,如果前面一个元素比它小,那么前面一个元素能延伸到的位置,
当前元素也可以延伸到,然后类似链表往前找的同时延伸链即可。向后找的时候类似。区间和用一个前缀和来处理。
ummmmmm
这个题目有毒,明明说好的,结果一样 l r 输出任意。wa了n次就wa在这里
那 r ,l 不赋初值的话 1 0 这个样例答案是错的,但是在后面temp那判断式加一个= 应该就对了,还是wa
后来赋初值以后加= 还是wa 但是加一个r-l<r[i]-l[i] 之后就会对
什么神奇的数据
#include <iostream>#include<algorithm>#include<string>#include<cstring>#include<cstdio>#include<cmath>using namespace std;const int maxn=100000+5;int s[maxn];int l[maxn];int r[maxn];long long sum[maxn];int n;int main(){ //freopen("out.txt","w",stdout); int t=0; while(cin>>n) { s[0]=-1;s[n+1]=-1;//一定要有 否则会wa???? sum[0]=0; for(int i=1;i<=n;i++) { scanf("%d",&s[i]); sum[i]=sum[i-1]+s[i]; l[i]=i; r[i]=i; } for(int i=1;i<=n;i++) { while(s[l[i]-1]>=s[i])//=不能缺 { l[i]=l[l[i]-1]; //延伸 } } for(int i=n;i>=1;i--) { while(s[r[i]+1]>=s[i]) { r[i]=r[r[i]+1]; } } int ll=1,rr=1;//ll rr 一定要赋初值1没有就会wa,不懂为啥 long long ans=0; for(int i=1;i<=n;i++) { //cout<<sum[r[i]]-sum[l[i]-1]<<endl; long long temp=(sum[r[i]]-sum[l[i]-1])*s[i]; if(temp>ans) //????神奇不能有= { ans=temp; ll=l[i]; rr=r[i]; } } if(t!=0) printf("\n"); t++; printf("%lld\n%d %d\n",ans,ll,rr); } return 0;}
阅读全文
0 0
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- 如何使用RedisTemplate访问Redis数据结构
- python中文乱码的解决方法
- 练习 1- 8 编写一个统计空格,制表符与换行符个数的程序
- SQL 查询和优化(七)
- 理解最基本的Vue项目
- UVA
- 嵌入式学习21(C++继承)
- (4)Oracle约束
- 香蕉派或者树梅派+Kali:搭建一个偷WiFi密码的黑客站
- kotlin开发android例子-股票查询
- mac 执行brew update 报错 Error:解决,及brew 升级
- js css3仿ios toast提示。
- C++排序算法之计数排序
- 微信公众平台开发之模板消息(Java)