https://pintia.cn/problem-sets/994805342720868352/problems/994805514284679168
方法一: 前缀和+枚举 时间复杂度: O(n2)

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int s[N],n;
int startx,endx,ans=-1e9;
bool flag;
int main(void)
{cin>>n;for(int i=1;i<=n;i++){cin>>s[i];if(s[i]>=0) flag=true;s[i]+=s[i-1];}if(!flag){cout<<0<<" "<<s[1]<<" "<<s[n]-s[n-1];return 0;}for(int i=1;i<=n;i++){for(int j=i;j<=n;j++){int sum=s[j]-s[i-1];if(sum>ans){ans=sum;startx=s[i]-s[i-1];endx=s[j]-s[j-1];}}}cout<<ans<<" "<<startx<<" "<<endx;return 0;
}

方法二: 前缀和+贪心 时间复杂度O(n)
s[l,r]=s[r]-s[l-1] 故对每一个以r结尾的区间,我们让减的数s[l-1]最小,那么此时以r结尾的所有区间就可以求一个最大值。
即在[0,r-1]中取一个最小的值。
对于每一个r结尾的区间的最大和中,求一个最大值,即可求整个数组的一个最大的区间和。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int s[N],n;
bool flag;
int ans=-1e9,startx,endx;
int main(void)
{cin>>n;for(int i=1;i<=n;i++) {cin>>s[i];if(s[i]>=0) flag=true;s[i]+=s[i-1];}if(!flag){cout<<0<<" "<<s[1]<<" "<<s[n]-s[n-1];return 0;}int temp=1e9;int index=0;for(int i=1;i<=n;i++){if(temp>s[i-1]) temp=s[i-1],index=i;//保存前0-i-1中一个最小的前缀和int sum=s[i]-temp;if(sum>ans) ans=sum,startx=index,endx=i;}cout<<ans<<" "<<s[startx]-s[startx-1]<<" "<<s[endx]-s[endx-1];return 0;
}

方法三: 双指针+贪心 时间复杂度O(n)
感觉写的有点问题,有一个测试点,应该是最后故意卡的过了

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int ans=-1e9,sum,startx,endx;
int s[N],n;
int main(void)
{cin>>n;int flag=true;for(int i=0;i<n;i++){cin>>s[i];if(s[i]>=0) flag=false;} if(flag){cout<<0<<" "<<s[0]<<" "<<s[n-1];return 0;}for(int i=0,j=0;i<n;i++){sum+=s[i];while(sum<0) sum=sum-s[j],j++; if(sum>ans) {ans=sum;startx=s[j];endx=s[i];}}if(ans>0) cout<<ans<<" "<<startx<<" "<<endx;else cout<<0<<" "<<0<<" "<<0;return 0;
}

1007 Maximum Subsequence Sum (25 分)【难度: 一般 / 知识点: 最大子序列和】相关推荐

  1. 【PAT甲】1007 Maximum Subsequence Sum (25分),求最大字段和及区间

    problem 1007 Maximum Subsequence Sum (25分) Given a sequence of K integers { N ​1 ​​ , N ​2 ​​ , -, N ...

  2. PAT甲级--1007 Maximum Subsequence Sum (25 分)

    题目详情 - 1007 Maximum Subsequence Sum (25 分) (pintia.cn) Given a sequence of K integers { N1​, N2​, .. ...

  3. PAT甲级 -- 1007 Maximum Subsequence Sum (25 分)

    Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to ...

  4. 【测试点5】1007 Maximum Subsequence Sum (25 分)

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 Given a sequence of K integers { N​1​​ , N​2​​ , -, N​K​​ }. A co ...

  5. 1007 Maximum Subsequence Sum (25 分) java 题解

    Given a sequence of K integers { N1​, N2​, ..., NK​ }. A continuous subsequence is defined to be { N ...

  6. 【PAT甲级 最长公共子串】1007 Maximum Subsequence Sum (25 分) C++ 全部AC

    题目 读题!读题! 题上让输出最长子串起始位置和终止位置的数字,而不是角标 如果每个数都是负数,则输出0 不要看着测试用例去猜题意,要先把题完整看完了再开始码! 如果自己的测试用例全都通过了,题目的测 ...

  7. 【个人刷题笔记】1007 Maximum Subsequence Sum (25 分)最大子段和简单DP,一堆坑

    思路: 思路简单的,简单的dp,我是采取了一个前缀和用于计算区间的总和 ( sum[i + k] - sum[i - 1] 可以表示区间[i , i + k] 的总和) 一看就会,一写就废 首先是第一 ...

  8. PAT甲级1007 Maximum Subsequence Sum (25 分)题解

    \quad 这是最大子序列和问题,是一个典型的动态规划题目,我在博客中对几个常见的动态规划算法进行了分析.设输入的数保存在数组a[max]中,那么转移方程为dp[i]=max(dp[i-1]+a[i] ...

  9. PTA 01-复杂度2 Maximum Subsequence Sum (25分)

    题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/663 5-1 Maximum Subsequence Sum   (25分) Given ...

最新文章

  1. Windows下安装配置SBT
  2. rs232 距离_你知道RS232与RS485接口的区别吗?
  3. Mysql select into outfile NULL值导出的处理方法
  4. java 生成器 设计模式_Java中的生成器设计模式
  5. java后端获取客户端(用户)真实ip,原理
  6. 自定义控件三部曲之动画篇(一)——alpha、scale、translate、rotate、set的xml属性及用法
  7. web客户端安全之跨站点请求伪造攻击
  8. python防止sql注入的方法_python解决sql注入以及特殊字符
  9. c 语言游戏代码大全,C语言经典游戏代码
  10. 十种UI设计常用字体特效,让你的设计高大上!【萧蕊冰】
  11. 【Trailhead题目解析】Prepare your salesforce org for users - 2Update the Exchange Rate with ACM
  12. Excel如何在同一单元格内同时添加公式和字符?
  13. 数据分析面试必考的AB-Test详解
  14. Java绘制正态分布统计图
  15. 关于跨境物流3种运输模式讲解
  16. 你还在盲目跟风学Python?不要盲目!某华大学教授有话要说
  17. docker(1):什么是 Docker
  18. 用 JavaScript 实现手势库 - 实现监听逻辑【前端组件化】
  19. orb-slam2 从单目开始的简单学习(7):Optimizer
  20. 扫地机器人杂牌的怎么样_小户型用扫地机器人好吗?家用扫地机器人哪个牌子好?...

热门文章

  1. 98%的人没解出的德国面试逻辑题(离散数学篇)!?
  2. Centos-挂载和卸载分区-mount
  3. Java实现类似C/C++中的__FILE__、__FUNC__、__
  4. Tokyo Tyrant的下工具的使用
  5. C++ 虚拟析构函数
  6. Prototype Pattern(原型模式)
  7. linux设备驱动模型 - device/bus/driver
  8. AB1601GPIO不支持较高频率的脉冲中断
  9. 【Pygame小游戏】剧情流推荐:什么样的游戏才能获得大家的喜欢呢?(魔鬼恋人、霸总娇妻版)
  10. [How TO]-openjrok维护手册