【题目描述】

    对一个序列A={a1, a2,..., an}给出函数:

                     t1     t2 
d(A) = max{ ∑ai + ∑aj | 1 <= s1 <= t1 < s2 <= t2 <= n }
i=s1 j=s2
求出该函数最大值。

【题目链接】

    http://noi.openjudge.cn/ch0206/1481/

【算法】

    类似股票买卖,决策一个i的位置,i之前的最大子段和和i+1及其之后的最大子段和的最大值。注意前i个最大子段和的求法:要记录一个前缀和最小值,注意初始化应当为a【1】和0的较小值(wa了半天才发现)。

【代码】

 #include <bits/stdc++.h>
using namespace std;
int t,n,i;
int a[],pre[],post[];
int main()
{
scanf("%d",&t);
while(t--) {
memset(pre,,sizeof(pre));
memset(post,,sizeof(post));
scanf("%d",&n);
for(i=;i<=n;i++) scanf("%d",&a[i]),a[i]+=a[i-];
pre[]=a[];
int minn=min(,a[]);
for(i=;i<n;i++) minn=min(minn,a[i]),pre[i]=max(pre[i-],a[i]-minn);
post[n]=a[n]-a[n-];
int maxn=a[n];
for(i=n-;i>;i--) maxn=max(maxn,a[i]),post[i]=max(post[i+],maxn-a[i-]);
int ans=-1e9;
for(i=;i<n;i++)
ans=max(ans,pre[i]+post[i+]);
printf("%d\n",ans);
}
return ;
}

    

最新文章

  1. javascript中函数声明和函数表达式浅析
  2. oracle 函数写法 总结
  3. PSP个人(观众界面)
  4. javascript 设计模式-----模块模式
  5. ios 适应屏幕
  6. bzoj 3489: A simple rmq problem k-d树思想大暴力
  7. ViewSwitcher用法浅析
  8. homework-05 GoldNumberServer
  9. 书签小助手V1.1发布了
  10. paip.jdk1.4 1.5(5.0) 1.6(6.0) 7.0 8.0特点比较与不同
  11. WebService之CXF注解报错(一)
  12. ASP.NET MVC制作404跳转(非302和200)
  13. Description has only two Sentences(欧拉定理 +快速幂+分解质因数)
  14. 我的 FPGA 学习历程(14)—— PWM 脉冲宽度调制
  15. 五子棋.html
  16. 专题1:记忆化搜索/DAG问题/基础动态规划
  17. python必看经典书籍:笨办法学python
  18. 做二级菜单时候遇到的关于事件冒泡以及mouseover和mouseenter的不同
  19. unity中实现静态的3D对象对其他对象的跟随
  20. bzoj3404

热门文章

  1. 2019-3-9-通过-frp-开启服务器打开本地的-ZeroNet-服务器外网访问
  2. 联想ideapad 310s如何进BIOS,换固态硬盘SSD,配置U盘启动,重装Win10系统
  3. 04.Linux-CentOS系统sudo权限配置
  4. 学Python的第六天
  5. docker设置proxy
  6. python 小工具 重命名当前文件夹内所有的文件,升序命名
  7. python NameError: name &#39;file&#39; is not defined
  8. Test 6.29 T3 小学生
  9. Linux内核设计与实现 总结笔记(第五章)系统调用
  10. ubuntu18.04-安装最新cmake