1065 最小正子段和
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题

 收藏
 关注

N个整数组成的序列a[1],a[2],a[3],…,a[n],从中选出一个子序列(a[i],a[i+1],…a[j]),使这个子序列的和>0,并且这个和是所有和>0的子序列中最小的。
例如:4,-1,5,-2,-1,2,6,-2。-1,5,-2,-1,序列和为1,是最小的。
Input
第1行:整数序列的长度N(2 <= N <= 50000)
第2 - N+1行:N个整数
Output
输出最小正子段和。
Input示例
8
4
-1
5
-2
-1
2
6
-2
Output示例
1

题解:

开一个结构体s[i],s[i].val表示前i个数之和,s[i].id==i,在输入完毕后对这个结构体的val值进行排序,之后遍历i,

对于每一个i遍历j(i-1→0),找到第一个s[i].id>s[j].id的地方并判断此时的s[i].val-s[j].val是不是最佳,或是找到第一

个s[i].val-s[j].val>ans(当前最佳)然后break,两重循环后ans即是最小值,复杂度约为nlogn

#include<stdio.h>
#include<algorithm>
using namespace std;
#define LL long long
typedef struct
{LL id;LL val;
}Res;
Res s[50005];
LL a[50005];
bool comp(Res a, Res b)
{if(a.val<b.val)return 1;return 0;
}
int main(void)
{int n, i, j;LL ans = 0;scanf("%d", &n);for(i=1;i<=n;i++){scanf("%lld", &a[i]);s[i].id = i;s[i].val = s[i-1].val+a[i];ans = max(ans, a[i]);}sort(s, s+n+1, comp);for(i=1;i<=n;i++){for(j=i-1;j>=0;j--){if(s[i].val-s[j].val>=ans)break;if(s[i].id>s[j].id && s[i].val-s[j].val>0){ans = min(ans, s[i].val-s[j].val);break;}}}printf("%lld\n", ans);return 0;
}

51nod-1065:最小正子段和相关推荐

  1. 51nod 1065 最小正子段和 (贪心)

    题目:传送门. 题意:中文题. 题解:求前缀和,并且标记每个数的下标,按照前缀和大小进行从小到大排序.随后进行遍历,如果满足下标data[i-1].id<data[i].id&& ...

  2. 51nod 1065 最小正字段和 解决办法:set存前缀和,二分插入和二分查找

    题目: 这题要求大于0的最小字段和,常规O(n)求最大字段和的方法肯定是没法解的. 我的解法是:用sum[i]存前i项的和,也就是前缀和. 这题就变成了求sum[j]-sum[i]的大于0的最小值( ...

  3. 【51nod - 1065】 最小正子段和( 前缀和排序 )

    题干: N个整数组成的序列a11,a22,a33,-,ann,从中选出一个子序列(aii,ai+1i+1,-ajj),使这个子序列的和>0,并且这个和是所有和>0的子序列中最小的. 例如: ...

  4. 2022-6-5 括号之价,最长配对,梦中岛之路,小Biu的旅行,最小正子段和,小b和排序,顺子,重排列得到2的幂,重排列,和为K的倍数,低买高卖,小b删列

    1. 括号之价 [栈] 小Y上数据结构课的时候摸鱼,听到老师在讲用栈做括号匹配,于是乎边随意写了一个合法的括号序列.但是光是写括号太无聊了,他现在想知道这个括号序列的价值.他是这样定义一个括号序列的价 ...

  5. 最小正连续子序列和 问题

    2019独角兽企业重金招聘Python工程师标准>>> 给你一个数组a[1...n],求最小正连续子序列和 这个问题不能用dp解,因为不具有最优子结构.只能尝试其他方法. 常用定义, ...

  6. c语言求佩尔方程的解设计思路,c语言版 佩尔方程求最小正整数解及第k解(矩阵快速幂)...

    佩尔方程讲解连接: 若一个丢番图方程具有以下的形式: 且 为正整数,则称此方程为佩尔方程(英文:Pell's equation 德文:Pellsche Gleichung) 若 是完全平方数,则这个方 ...

  7. int、double型数最大正数值和最小正数值分别是多少

    int型数最大正数值和最小正数值分别是多少 #include <stdio.h> #include <stdlib.h> #include <math.h> int ...

  8. 佩尔(Pell)方程最小正整数解

    佩尔方程最小正整数解

  9. 关于扩展欧几里得求最小正整数解

    关于扩展欧几里得求最小正整数解 //扩展欧几里得算法求最小正整数解 这里讲的是欧几里得,不是那个洗澡测浮力的阿基米德 . 什么是欧几里得算法: 扩展欧几里得算法是用来求解一类特定的不定方程的,形如ax ...

最新文章

  1. 微信小程序-01-项目组成文件介绍(入门篇)
  2. HDU 1009 - FatMouse' Trade (部分背包问题)
  3. 一行命令搞定node.js 版本安装、升级与卸载
  4. 转载 cglib代理和java代理
  5. 每天一道LeetCode-----计算直方图中最大矩形的面积
  6. JPA EntityManager –HibernateEntityManager
  7. LeetCode——二叉树的前中后序遍历
  8. 【亲测可行】如何使用Xshell连接服务器(删除服务器,调节终端字号)
  9. SQL编程题练习题(基础)
  10. Flink案例代码,面试题
  11. Qt之表格输入内容限制方法示例
  12. 苹果电脑无法自动修复计算机,苹果电脑没办法正常开机的解决方案
  13. 实现子弹自动向前运动 定时器 移动精灵 精灵释放
  14. 【夏目鬼鬼分享】SpringBoot打包并发布(IDEA)
  15. 若查找课程表中课程名称是计算机或英语,若查找“课程表”中课程名称是“计算机”或“英语”的记录,应在查询设计视图的“课程名称”列条件行中输入()。...
  16. sqlalchemy.exc.ArgumentError: relationship 'tags' expects a class or a mapper argument (received:
  17. 软件测试100W字!【这可能是最全的总结】
  18. 水星无线网卡驱动下载
  19. Docker compose - 最开始的version 字段是什么,为什么要写这个字段
  20. python可视化-条形图(柱状图)与直方图

热门文章

  1. 学python可以做什么职业-python学完之后比较适合哪些职业工作呢?
  2. 语音识别软件哪个好?好用的语音识别软件盘点
  3. Android语音识别开发详解(基于讯飞语音SDK)
  4. 密码加密模块 bcrypt (详细,好理解,示例源码)
  5. Hbuilder 屏幕放大缩小
  6. qmenu qt 关闭,Qt实现点击菜单项后QMenu不关闭功能
  7. 超级计算机能算数学题吗,圆周率到底能不能算尽?人类拿超级计算机算了一下,结果不敢相信...
  8. linux 邮件服务器pop3,linux下用pop3收web电子邮箱_邮件服务器
  9. 滑动窗口:字符串的变位词(排列)leetcode567,leetcode438
  10. 用数组建立二叉树(LeetCode二叉树测试)