套路题

求出来以每个数为最大值/最小值时的一个区间范围, 然后枚举每个数为最大值的情况更新即可, 但是对于重复数的话需要特判一下, 假如用map记录来特判复杂度就是$O(nlogn)$, 不过题目说了数据随机, 数字几乎不重复, 没特判直接跑了Rank2

  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cstdio>
  4. #include <math.h>
  5. #include <set>
  6. #include <map>
  7. #include <queue>
  8. #include <string>
  9. #include <string.h>
  10. #define REP(i,a,n) for(int i=a;i<=n;++i)
  11. #define PER(i,a,n) for(int i=n;i>=a;--i)
  12. #define hr putchar(10)
  13. #define pb push_back
  14. #define lc (o<<1)
  15. #define rc (lc|1)
  16. #define mid ((l+r)>>1)
  17. #define ls lc,l,mid
  18. #define rs rc,mid+1,r
  19. #define x first
  20. #define y second
  21. #define io std::ios::sync_with_stdio(false)
  22. #define endl '\n'
  23. using namespace std;
  24. typedef long long ll;
  25. typedef pair<int,int> pii;
  26.  
  27. const int N = 1e6+10;
  28.  
  29. int n;
  30. int a[N], b[N], L[N], R[N], LL[N], RR[N];
  31. ll ans[N];
  32. void chkmax(ll &x, ll y) {x=max(x,y);}
  33.  
  34. void work() {
  35. REP(i,1,n) scanf("%d", a+i);
  36. REP(i,1,n) ans[i]=0;
  37. REP(i,1,n) {
  38. LL[i]=L[i]=i-1;
  39. while (L[i]&&a[i]>=a[L[i]]) L[i]=L[L[i]];
  40. while (LL[i]&&a[i]<=a[LL[i]]) LL[i]=LL[LL[i]];
  41. }
  42. PER(i,1,n) {
  43. RR[i]=R[i]=i+1;
  44. while (R[i]<=n&&a[i]>=a[R[i]]) R[i]=R[R[i]];
  45. while (RR[i]<=n&&a[i]<=a[RR[i]]) RR[i]=RR[RR[i]];
  46. }
  47. REP(i,1,n) {
  48. pii mi(a[i],i);
  49. PER(j,L[i]+1,i-1) {
  50. mi = min(mi, pii(a[j],j));
  51. chkmax(ans[RR[mi.y]-j],(ll)mi.x*a[i]);
  52. }
  53. mi = pii(a[i],i);
  54. REP(j,i+1,R[i]-1) {
  55. mi = min(mi, pii(a[j],j));
  56. chkmax(ans[j-LL[mi.y]],(ll)mi.x*a[i]);
  57. }
  58. }
  59. REP(i,1,n) ans[1]=max(ans[1],(ll)a[i]*a[i]);
  60. PER(i,1,n) ans[i]=max(ans[i],ans[i+1]);
  61. REP(i,1,n) printf("%lld\n",ans[i]);
  62. }
  63.  
  64. int main() {
  65. for (; ~scanf("%d", &n); ) work();
  66. }

hdu 5696 区间的价值的更多相关文章

  1. hdu 5696 区间的价值 单调栈+rmq

    区间的价值 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem D ...

  2. HDU 5696 ——区间的价值——————【线段树、快排思想】

    区间的价值 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  3. HDU 5696 区间的价值 暴力DFS

    Problem Description 我们定义"区间的价值"为一段区间的最大值*最小值. 一个区间左端点在L,右端点在R,那么该区间的长度为(R−L+1). 现在聪明的杰西想要知 ...

  4. [hdu] 5696 区间的价值 || 序列分治

    原题 我们定义"区间的价值"为一段区间的最大值*最小值. 一个区间左端点在L,右端点在R,那么该区间的长度为(R−L+1). 求长度分别为1-n的区间的最大价值. 保证数据随机 因 ...

  5. HDU 5696 区间的价值 暴力

    分析:枚举以该点为最小值,然后找到最大值,更新,相应数组,至此,把区间分割(因为包含这个最小值点已经枚举过) 然后理解理解,感觉好像挺对的...因为后面(即dfs区间变小时)如果再包含最小值节点,也不 ...

  6. HDU5696:区间的价值——题解

    http://acm.hdu.edu.cn/showproblem.php?pid=5696 题面是中文的我就不粘贴过来了…… ———————————————————————— 这题垃圾题!!神tm卡 ...

  7. hdu5696 区间的价值

    区间的价值 我们定义"区间的价值"为一段区间的最大值*最小值. 一个区间左端点在L,右端点在R,那么该区间的长度为(R-L+1). 现在聪明的杰西想要知道,对于长度为k的区间,最大 ...

  8. hdu 5869 区间不同GCD个数(树状数组)

    Different GCD Subarray Query Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K ( ...

  9. hdu 4283 区间dp

    You Are the One Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

随机推荐

  1. [Haskell]解决hslua unknown symbol `___s trtod'的问题

    用cabal编译libpandoc时遇到这样的错误: HShslua-0.3.12.o: unknown symbol `___s trtod' ghc.exe: unable to load pac ...

  2. mongoexport

    导数据 数据同步 mongodb无自增id 数据断点 mongoexport — MongoDB Manual https://docs.mongodb.com/manual/reference/pr ...

  3. HyperLogLog in Practice: Algorithmic Engineering of a State of The Art Cardinality Estimation Algorithm

    HyperLogLog参考下面这篇blog, http://blog.codinglabs.org/articles/algorithms-for-cardinality-estimation-par ...

  4. Andrew Ng机器学习公开课笔记 -- Logistic Regression

    网易公开课,第3,4课 notes,http://cs229.stanford.edu/notes/cs229-notes1.pdf 前面讨论了线性回归问题, 符合高斯分布,使用最小二乘来作为损失函数 ...

  5. Python爬虫实例(五) requests+flask构建自己的电影库

    目标任务:使用requests抓取电影网站信息和下载链接保存到数据库中,然后使用flask做数据展示. 爬取的网站在这里 最终效果如下: 主页: 可以进行搜索:输入水形物语 点击标题进入详情页: 爬虫 ...

  6. Python开发【Django】:分页、Cookie和Session

    分页 1.简单分页 涉及xss攻击,需要用到mark_safe方法,使用此方法字符串传输到后端后,已html形式显示,而非字符串 HTML文件: <!DOCTYPE html> <h ...

  7. nginx 与 浏览器缓存

    一.本地静态文件 location /html/{ rewrite ^(html/.*)$ /$1 break; root /data/static; expires 12h; etag off; i ...

  8. [Axiom 3D]1.初识Axiom

    1. 简介 The Axiom 3D Rendering Engine is a fully object oriented 3D graphics engine using C# and the . ...

  9. c primer plus(五版)编程练习-第六章编程练习

    1.编写一个程序,创建一个具有26 个元素的数组,并在其中存储26 个小写字母.并让该程序显示该数组的内容. #include<stdio.h> #define SIZE 26 int m ...

  10. python selenium 安装与 chromedriver安装

    安装 pip install selenium 安装完成之后运行脚本,如果没报错那ok.但是很不幸运,我报错啦.(本人使用ubuntu16.04,python2,or python3) 贴出我的报错: ...