1007 Maximum Subsequence Sum (25 分)【难度: 一般 / 知识点: 最大子序列和】
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 分)【难度: 一般 / 知识点: 最大子序列和】相关推荐
- 【PAT甲】1007 Maximum Subsequence Sum (25分),求最大字段和及区间
problem 1007 Maximum Subsequence Sum (25分) Given a sequence of K integers { N 1 , N 2 , -, N ...
- PAT甲级--1007 Maximum Subsequence Sum (25 分)
题目详情 - 1007 Maximum Subsequence Sum (25 分) (pintia.cn) Given a sequence of K integers { N1, N2, .. ...
- PAT甲级 -- 1007 Maximum Subsequence Sum (25 分)
Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to ...
- 【测试点5】1007 Maximum Subsequence Sum (25 分)
立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 Given a sequence of K integers { N1 , N2 , -, NK }. A co ...
- 1007 Maximum Subsequence Sum (25 分) java 题解
Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to be { N ...
- 【PAT甲级 最长公共子串】1007 Maximum Subsequence Sum (25 分) C++ 全部AC
题目 读题!读题! 题上让输出最长子串起始位置和终止位置的数字,而不是角标 如果每个数都是负数,则输出0 不要看着测试用例去猜题意,要先把题完整看完了再开始码! 如果自己的测试用例全都通过了,题目的测 ...
- 【个人刷题笔记】1007 Maximum Subsequence Sum (25 分)最大子段和简单DP,一堆坑
思路: 思路简单的,简单的dp,我是采取了一个前缀和用于计算区间的总和 ( sum[i + k] - sum[i - 1] 可以表示区间[i , i + k] 的总和) 一看就会,一写就废 首先是第一 ...
- PAT甲级1007 Maximum Subsequence Sum (25 分)题解
\quad 这是最大子序列和问题,是一个典型的动态规划题目,我在博客中对几个常见的动态规划算法进行了分析.设输入的数保存在数组a[max]中,那么转移方程为dp[i]=max(dp[i-1]+a[i] ...
- 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 ...
最新文章
- Windows下安装配置SBT
- rs232 距离_你知道RS232与RS485接口的区别吗?
- Mysql select into outfile NULL值导出的处理方法
- java 生成器 设计模式_Java中的生成器设计模式
- java后端获取客户端(用户)真实ip,原理
- 自定义控件三部曲之动画篇(一)——alpha、scale、translate、rotate、set的xml属性及用法
- web客户端安全之跨站点请求伪造攻击
- python防止sql注入的方法_python解决sql注入以及特殊字符
- c 语言游戏代码大全,C语言经典游戏代码
- 十种UI设计常用字体特效,让你的设计高大上!【萧蕊冰】
- 【Trailhead题目解析】Prepare your salesforce org for users - 2Update the Exchange Rate with ACM
- Excel如何在同一单元格内同时添加公式和字符?
- 数据分析面试必考的AB-Test详解
- Java绘制正态分布统计图
- 关于跨境物流3种运输模式讲解
- 你还在盲目跟风学Python?不要盲目!某华大学教授有话要说
- docker(1):什么是 Docker
- 用 JavaScript 实现手势库 - 实现监听逻辑【前端组件化】
- orb-slam2 从单目开始的简单学习(7):Optimizer
- 扫地机器人杂牌的怎么样_小户型用扫地机器人好吗?家用扫地机器人哪个牌子好?...
热门文章
- 98%的人没解出的德国面试逻辑题(离散数学篇)!?
- Centos-挂载和卸载分区-mount
- Java实现类似C/C++中的__FILE__、__FUNC__、__
- Tokyo Tyrant的下工具的使用
- C++ 虚拟析构函数
- Prototype Pattern(原型模式)
- linux设备驱动模型 - device/bus/driver
- AB1601GPIO不支持较高频率的脉冲中断
- 【Pygame小游戏】剧情流推荐:什么样的游戏才能获得大家的喜欢呢?(魔鬼恋人、霸总娇妻版)
- [How TO]-openjrok维护手册