poj2796:http://poj.org/problem?id=2796

题意:给出一个长度为n(n<100000)的序列,求出一个子序列,使得这个序列中的最小值乘以这个序列的和的值最大。

思路:枚举每一个点,然后算出以这个点为最小值的区间能向左向右扩展到哪里,然后选择最优的就行。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. const int N=1e5+;
  7. long long a[N];
  8. long long ll[N],rr[N];
  9. long long sum[N];
  10. int n;
  11. int main(){
  12. while(~scanf("%d",&n)){
  13. memset(sum,,sizeof(sum));
  14. memset(ll,,sizeof(ll));
  15. memset(rr,,sizeof(rr));
  16. memset(a,-,sizeof(a));
  17. sum[]=;
  18. for(int i=;i<=n;i++){
  19. scanf("%I64d",&a[i]);
  20. sum[i]=sum[i-]+a[i];
  21. }
  22. for(int i=;i<=n;i++){
  23. ll[i]=i;
  24. if(i==)continue;
  25. long long t=i-;
  26. while(a[i]<=a[t]){
  27. ll[i]=ll[t];
  28. t=ll[t]-;
  29. }
  30. }
  31. for(int i=n;i>=;i--){
  32. rr[i]=i;
  33. if(i==n)continue;
  34. long long t=i+;
  35. while(a[i]<=a[t]){
  36. rr[i]=rr[t];
  37. t=rr[t]+;
  38. }
  39. }
  40. long long l,r,ans=-;
  41. for(int i=;i<=n;i++){
  42. long long temp=a[i]*(sum[rr[i]]-sum[ll[i]-]);
  43. if(temp>ans){
  44. ans=temp;
  45. l=ll[i];r=rr[i];
  46. }
  47. }
  48. printf("%I64d\n%I64d %I64d\n",ans,l,r);
  49. }
  50. }

随机推荐

  1. TCP参数设置

    我们这里应用的是CentOS5.3,并内核使用的是2.6.18-128.el5PAE #1 SMP .修改部分TCP ,有的是为了提高性能与负载,但是存在降低稳定性的风险.有的则是安全方面的配置,则有 ...

  2. MYSQL 专家 ----zhaiwx_yinfeng

    http://mysqllover.com/?p=708 https://yq.aliyun.com/articles/54454 http://blog.csdn.net/zhaiwx1987/ar ...

  3. 追踪CPU跑满 堆栈调试

    http://blog.donghao.org/2014/04/24/%E8%BF%BD%E8%B8%AAcpu%E8%B7%91%E6%BB%A1/

  4. android开发之定制ViewPager滑动事件

    明天还要加班,苦逼的程序猿,简单说说最近遇到的一个问题吧. 我在viewpager+fragment学习笔记中简单介绍过ViewPager+Fragment的用法,其实并不难,当时实现了一个如下图所示 ...

  5. WS_CLIPCHILDREN和WS_CLIPSIBLINGS的理解(转载)

    1.1 WS_CLIPCHILDREN WS_CLIPCHILDREN样式从字面上可以理解成ClipChildren,裁减子窗口. MSDN里的E文解释:Excludes the area occup ...

  6. hibernate和mybatis思想,区别,优缺点

    Hibernate 简介 Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行.程序员往往只 ...

  7. HDU1862EXCEL排序

    其实最近都没有兴趣做排序题目,因为我觉得纯粹排序对我而言进步不大,但是舍友TLE了,叫我试一试. 整道题的思路很简单啦,我用的是快排,比较的原则也给得很清楚,不必多言,我没有用stdlib的快排,也没 ...

  8. SGU 296.Sasha vs. Kate(贪心)

    题意: 给出长度为n(<=1000)的一个数.输出删掉k个数字后的最大值. Solution: 简单贪心. s[i]代表数字s的第i位. 从前往后第一个满足s[i]>s[i-1]的位置,最 ...

  9. Photon开发实战(2)——开发框架、第一个Photon程序

    Photon基础开发框架 Photon (v4)的基本框架.开发框架主要Photon和游戏逻辑(C#)两个部分,如下图最新的Photon v4支持的4种底层协议,游戏开发逻辑Photon目前主要划分为 ...

  10. 分享一个自己写的基于TP的关系模型(三)

    这段时间对模型做了升级和优化,并将版本更新到TP3.2. 下载 下载后请将目录放置TP的Library目录下 1.数据节点优化,原来的节点为模型的名称或者表名,现在更新为定义关系的方法名 public ...