塔神酷爱玩梦幻西游这款游戏,这款游戏以著名的章回小说《西游记》故事为背景,透过Q版的人物,营造出浪漫的网络游戏风格.塔神以追求天下无敌为目标,从一个默默无闻的菜鸟,打拼到了登峰造极的大师,犀利的人物当然离不开犀利的装备,于是塔神带着一堆票子开始逛市场买装备,塔神为了图个方便,只会在连续的几家摊位买装备.

现在市场有n个摊位,其中不乏奸商把价格抬的很高,但是对于混了这么就江湖的塔神来说,对每件装备心中当然会有个固定的价格,所以逛完市场以后,他把每家装备的价钱与自己心中的价钱的差价列成了一张表,只要这些连续差价的和的绝对值最小,塔神就会高兴的hold不住了,于是他把问题丢给可怜的zzd,但是像zzd这种菜鸟解决不了塔神提出高端的问题,你能帮助他完成任务吗?

输入

第一行输入n(n<=100000)表示n个摊位,以0结束

第二行包括n个数据,第i个数据m表示第i家摊位装备的差价(-100<=m<=100)

输出

输出让塔神能满意的最小值

样例输入

2
-10 4
6
2 -4 -2 6 1 5
4
1 2 -4 -5
0

样例输出

4
0
1

题意

连续子段和绝对值最小。

题解

一开始以为要O(n),然后记得求连续子段和最大的那个贪心,就想魔改,改了半天放弃了。

记一个前缀和sum[i]=a[1...i],题目变成找(i,j),求|sum[i]-sum[j]|最小值。

那么把sum排个序,求相邻最小就行了。

复杂度O(nlogn)。

代码

 #include<bits/stdc++.h>
using namespace std; const int N=1e5+; int sum[N];
int main()
{
int n,x;
while(scanf("%d",&n)!=EOF,n)
{
for(int i=;i<=n;i++)
{
scanf("%d",&x);
sum[i]=sum[i-]+x;
}
sort(sum,sum++n);
int ans=1e9;
for(int i=;i<=n;i++)ans=min(ans,abs(sum[i]-sum[i-]));
printf("%d\n",ans);
}
return ;
}

最新文章

  1. Android之探究viewGroup自定义子属性参数的获取流程
  2. 总结常见的ES6新语法特性
  3. 容器化redis高可用方案
  4. HBase的Write Ahead Log (WAL) —— API与基本概念
  5. Java8新特性--lamada详解
  6. C#中的变量及命名规则
  7. C#中判断子窗体是否存在
  8. C语言中时间调用处理的相关函数介绍
  9. 用GPUImage开启相机并且开启滤镜效果
  10. bootbox.js [v4.2.0]设置确认框 按钮语言为中文
  11. python学习之-成员信息增删改查
  12. 【转】带checkbox的ListView实现(二)——自定义Checkable控件的实现方法
  13. javac命令详解(下)
  14. 使用javascript oop开发滑动(slide) 菜单控件
  15. C#复习二(Twenty First Day)
  16. hosts etc css-js
  17. iOS多线程中performSelector
  18. 笔记:Maven Web项目
  19. Django admin注册model究竟要怎么写才优雅 批量注册model
  20. 传输层的端口与TCP标志中的URG和PSH位

热门文章

  1. idea在同一窗口创建多个项目(详细步骤)
  2. 使用CEfSharp之旅(6)拦截网络请求 截取response返回
  3. nginx 配置文件备份 nginx.conf and vhosts
  4. 全网最全乌云drops文章下载(epub)
  5. MyBatis与Hibernate
  6. css实现字母或数字强制换行
  7. 一.ES6的开发环境搭建
  8. C++ 标准文件的写入读出(ifstream,ofstream)
  9. C++模拟实现Objective-C协议和代理模式
  10. vuex结合vue-cookies的使用