51nod-1065:最小正子段和
第1行:整数序列的长度N(2 <= N <= 50000) 第2 - N+1行:N个整数
输出最小正子段和。
8 4 -1 5 -2 -1 2 6 -2
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:最小正子段和相关推荐
- 51nod 1065 最小正子段和 (贪心)
题目:传送门. 题意:中文题. 题解:求前缀和,并且标记每个数的下标,按照前缀和大小进行从小到大排序.随后进行遍历,如果满足下标data[i-1].id<data[i].id&& ...
- 51nod 1065 最小正字段和 解决办法:set存前缀和,二分插入和二分查找
题目: 这题要求大于0的最小字段和,常规O(n)求最大字段和的方法肯定是没法解的. 我的解法是:用sum[i]存前i项的和,也就是前缀和. 这题就变成了求sum[j]-sum[i]的大于0的最小值( ...
- 【51nod - 1065】 最小正子段和( 前缀和排序 )
题干: N个整数组成的序列a11,a22,a33,-,ann,从中选出一个子序列(aii,ai+1i+1,-ajj),使这个子序列的和>0,并且这个和是所有和>0的子序列中最小的. 例如: ...
- 2022-6-5 括号之价,最长配对,梦中岛之路,小Biu的旅行,最小正子段和,小b和排序,顺子,重排列得到2的幂,重排列,和为K的倍数,低买高卖,小b删列
1. 括号之价 [栈] 小Y上数据结构课的时候摸鱼,听到老师在讲用栈做括号匹配,于是乎边随意写了一个合法的括号序列.但是光是写括号太无聊了,他现在想知道这个括号序列的价值.他是这样定义一个括号序列的价 ...
- 最小正连续子序列和 问题
2019独角兽企业重金招聘Python工程师标准>>> 给你一个数组a[1...n],求最小正连续子序列和 这个问题不能用dp解,因为不具有最优子结构.只能尝试其他方法. 常用定义, ...
- c语言求佩尔方程的解设计思路,c语言版 佩尔方程求最小正整数解及第k解(矩阵快速幂)...
佩尔方程讲解连接: 若一个丢番图方程具有以下的形式: 且 为正整数,则称此方程为佩尔方程(英文:Pell's equation 德文:Pellsche Gleichung) 若 是完全平方数,则这个方 ...
- int、double型数最大正数值和最小正数值分别是多少
int型数最大正数值和最小正数值分别是多少 #include <stdio.h> #include <stdlib.h> #include <math.h> int ...
- 佩尔(Pell)方程最小正整数解
佩尔方程最小正整数解
- 关于扩展欧几里得求最小正整数解
关于扩展欧几里得求最小正整数解 //扩展欧几里得算法求最小正整数解 这里讲的是欧几里得,不是那个洗澡测浮力的阿基米德 . 什么是欧几里得算法: 扩展欧几里得算法是用来求解一类特定的不定方程的,形如ax ...
最新文章
- 微信小程序-01-项目组成文件介绍(入门篇)
- HDU 1009 - FatMouse' Trade (部分背包问题)
- 一行命令搞定node.js 版本安装、升级与卸载
- 转载 cglib代理和java代理
- 每天一道LeetCode-----计算直方图中最大矩形的面积
- JPA EntityManager –HibernateEntityManager
- LeetCode——二叉树的前中后序遍历
- 【亲测可行】如何使用Xshell连接服务器(删除服务器,调节终端字号)
- SQL编程题练习题(基础)
- Flink案例代码,面试题
- Qt之表格输入内容限制方法示例
- 苹果电脑无法自动修复计算机,苹果电脑没办法正常开机的解决方案
- 实现子弹自动向前运动 定时器 移动精灵 精灵释放
- 【夏目鬼鬼分享】SpringBoot打包并发布(IDEA)
- 若查找课程表中课程名称是计算机或英语,若查找“课程表”中课程名称是“计算机”或“英语”的记录,应在查询设计视图的“课程名称”列条件行中输入()。...
- sqlalchemy.exc.ArgumentError: relationship 'tags' expects a class or a mapper argument (received:
- 软件测试100W字!【这可能是最全的总结】
- 水星无线网卡驱动下载
- Docker compose - 最开始的version 字段是什么,为什么要写这个字段
- python可视化-条形图(柱状图)与直方图
热门文章
- 学python可以做什么职业-python学完之后比较适合哪些职业工作呢?
- 语音识别软件哪个好?好用的语音识别软件盘点
- Android语音识别开发详解(基于讯飞语音SDK)
- 密码加密模块 bcrypt (详细,好理解,示例源码)
- Hbuilder 屏幕放大缩小
- qmenu qt 关闭,Qt实现点击菜单项后QMenu不关闭功能
- 超级计算机能算数学题吗,圆周率到底能不能算尽?人类拿超级计算机算了一下,结果不敢相信...
- linux 邮件服务器pop3,linux下用pop3收web电子邮箱_邮件服务器
- 滑动窗口:字符串的变位词(排列)leetcode567,leetcode438
- 用数组建立二叉树(LeetCode二叉树测试)