HDU 5696 区间的价值
来源:互联网 发布:软件项目工作总结报告 编辑:程序博客网 时间:2024/06/05 08:39
我们定义“区间的价值”为一段区间的最大值*最小值。
一个区间左端点在L ,右端点在R ,那么该区间的长度为(R−L+1) 。
现在聪明的杰西想要知道,对于长度为k 的区间,最大价值的区间价值是多少。
当然,由于这个问题过于简单。
我们肯定得加强一下。
我们想要知道的是,对于长度为1∼n 的区间,最大价值的区间价值分别是多少。
一个区间左端点在
现在聪明的杰西想要知道,对于长度为
当然,由于这个问题过于简单。
我们肯定得加强一下。
我们想要知道的是,对于长度为
分析:枚举以该点为最小值,然后找到最大值,更新,相应数组,至此,把区间分割(因为包含这个最小值点已经枚举过),递归写法即可
#include <cstdio>#include <iostream>#include <cstring>#include <string>#include <cstdlib>#include <algorithm>#include <cmath>#include <vector>#include <set>#include <list>#include <queue>#include <map>#include <stack>using namespace std;#define L(i) i<<1#define R(i) i<<1|1#define INF 0x3f3f3f3f#define pi acos(-1.0)#define eps 1e-10#define maxn 1000010#define MOD 1000000007typedef long long LL;const int N=1e5+5;int a[N],n;LL res[N];void dfs(int l,int r){ if(l>r)return; if(l==r){res[1]=max(res[1],1ll*a[l]*a[l]);return;} int k1,k2;k1=k2=l; for(int i=l;i<=r;++i){ if(a[i]<a[k1])k1=i; if(a[i]>a[k2])k2=i; } res[r-l+1]=max(res[r-l+1],1ll*a[k1]*a[k2]); dfs(l,k1-1); dfs(k1+1,r);}int main(){ while(~scanf("%d",&n)){ for(int i=1;i<=n;++i) scanf("%d",&a[i]),res[i]=0; dfs(1,n); for(int i=n-1;i>0;--i) res[i]=max(res[i],res[i+1]); for(int i=1;i<=n;++i) printf("%I64d\n",res[i]); } return 0;}
0 0
- HDU 5696 区间的价值
- HDU 5696 区间的价值
- HDU 5696 区间的价值
- HDU 5696 区间的价值
- HDU 5696 区间的价值 (DFS)
- HDU-5696-区间的价值(DFS)
- [HDU 5696] 区间的价值 (单调栈+RMQ)
- hdu 区间的价值(RMQ+扫描)
- HDU 5696 区间的价值 (百度之星2B)
- QAQ的区间价值
- QAQ的区间价值
- 区间的价值 V2
- 区间顺序枚举 hdu5696 区间的价值
- 51nod区间的价值
- Hdu5696 区间的价值(花式水)
- 分治法 区间的价值 hdu5696
- 51NOD AGT19A 区间的价值 V2
- 51NOD 1674 区间的价值 V2
- Java - 蓝桥杯 - 历届试题 翻硬币
- 【已解决】虚拟机提示VMware Workstation cannot connect to the virtual machine的问题
- Eclipse中更新SDK的方法
- 二级缓存
- 合并两个排序的链表
- HDU 5696 区间的价值
- Session 和 Cookie 的区别
- {dede:field name='array' /}的简单用法示范
- photoshop图像处理技术(一)
- windows 7 x64搭建FTP服务器
- Memcache Brief Intro
- iOS学习之——View的圆角设置
- android 关于listview中不同item的布局
- SM整合出错:ClassCastException: tk.licer.model.Role_$$_javassist_0 cannot be cast to javassist.util.proxy