PAT甲级真题-1007 Maximum Subsequence Sum详解优化
1007 Maximum Subsequence Sum
题目链接
https://pintia.cn/problem-sets/994805342720868352/problems/994805514284679168
解题思路
1.一开始的思路好像是叫“在线处理法”;但这种方法能过大部分是因为题目规定了全为负值时取0的特殊情况;而且,无法过值为非正数的情况;
for(int i=1;i<=n;i++){if(sum+Num[i]<0){sum=0;lnum=0;}else sum+=Num[i],lnum+=1;if(ans<sum){r=i;l=r-lnum+1;ans=sum;}}
2.另外一种思路就是dp,用dp[i]记录以i结尾的最大子序和,(动规NB);
用pre[i]记录子序的起始下标;一开始没想到这种方法是因为钻了牛角尖,没意识到只需要求出所有以i结尾的最大子序和,然后比较就可以了;
for(int i=2;i<=n;i++){if(dp[i-1]+Num[i]>Num[i]){dp[i]=dp[i-1]+Num[i];pre[i]=pre[i-1];}else {dp[i]=Num[i];pre[i]=i;}if(ans<dp[i]){ans=dp[i];ansi=i;}}
总结
想dp解法没头绪的时候,就用暴力试一试;暴力出奇迹;
代码展示
#include<bits/stdc++.h>
using namespace std;
/*
10
-10 1 2 3 4 -5 -23 3 7 -21
6
-2 11 -4 13 -5 -2
*/
int Num[10005];
int dp[10005];//以第i项结尾的最大子序和
int pre[10005];
int main(){int n;cin>>n;bool flag=false;for(int i=1;i<=n;i++){cin>>Num[i];if(Num[i])flag=true;}dp[1]=Num[1];pre[1]=1;int ans=-1,ansi;for(int i=2;i<=n;i++){if(dp[i-1]+Num[i]>Num[i]){dp[i]=dp[i-1]+Num[i];pre[i]=pre[i-1];}else {dp[i]=Num[i];pre[i]=i;}if(ans<dp[i]){ans=dp[i];ansi=i;}}if(ans==-1)cout<<0<<" "<<Num[1]<<" "<<Num[n];else cout<<ans<<" "<<Num[pre[ansi]]<<" "<<Num[ansi];return 0;
}
PAT甲级真题-1007 Maximum Subsequence Sum详解优化相关推荐
- PAT甲级真题目录(按题型整理)(转自柳神)
转载自:https://www.liuchuo.net/archives/2502?tdsourcetag=s_pcqq_aiomsg 最短路径 1003. Emergency (25)-PAT甲级真 ...
- PAT甲级1007 Maximum Subsequence Sum :[C++题解]DP,最大子序列和、求最优的区间方案
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: dp题. 这道题糅合了两个知识点: dp求最值(区间之和) 动态求区间方案:区间之和相等的条件下:要求区间左端点最靠前,如果左端点相 ...
- 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
1007 Maximum Subsequence Sum (25 分) Given a sequence of K integers { N1, N2, ..., NK }. A c ...
- 【PAT甲】1007 Maximum Subsequence Sum (25分),求最大字段和及区间
problem 1007 Maximum Subsequence Sum (25分) Given a sequence of K integers { N 1 , N 2 , -, N ...
- PAT甲级真题 1018 A+B in Hogwarts--python解法
PAT甲级真题 1018 A+B in Hogwarts 提交:2638 通过:1559 通过率:59% If you are a fan of Harry Potter, you would kno ...
- 1007 Maximum Subsequence Sum
1007 Maximum Subsequence Sum (25 分) Given a sequence of K integers { N1, N2, ..., NK }. A c ...
- 1007 Maximum Subsequence Sum
1007 Maximum Subsequence Sum (25 分) Given a sequence of K integers { N1, N2, ..., NK }. A continu ...
- 1007. Maximum Subsequence Sum (25)-PAT甲级真题(最大连续子序列和、动态规划dp)
Given a sequence of K integers { N1, N2, -, NK }. A continuous subsequence is defined to be { Ni, Ni ...
最新文章
- 生活随笔:保险公司来的电话
- EF Load之详讲
- H.264中IDR帧和I帧区别
- 利用Mybatis写第一个数据库操作的程序
- win7制作ntp服务器,如何将Win7作为NTP服务器
- 面试官系统精讲Java源码及大厂真题 - 20 SynchronousQueue 源码解析
- Linux桌面版横评:五、Ubuntu 7.04
- java虚拟机-d参数配置_JVM虚拟机参数介绍
- locat add filter
- matlab imfilter函数,Matlab中fspecial函数 和imfilter函数的用法
- 电信 dns服务器 不稳定,网速不稳定的解决方法:修改本地DNS
- file_get_contents() 报错failed to open stream: HTTP request failed! HTTP/1.1 505 HTTP Version Not Supp
- Redis伪集群搭建
- Python输出所有水仙花数(3种方法)
- 老黄历吉日吉时查询接口实现及代码示例
- 基于matlab的脑瘤mr图像处理_MRI(脑肿瘤)图像处理与分割、颅骨切除
- 公钥密码(非对称加密)
- Postman搭建mock server接口
- SDL Trados 2019 和 SDL Trados 2021 二零二一五月更新
- SFTP工具winscp下载与连上docker
热门文章
- Spark Standalone架构及安装部署
- 关于近期计算机职业新闻,工科类专业“钱景”排行,计算机已成过去式
- mxnet报错 Check failed: dshp.ndim() == 4U (3 vs. 4) : Input data should be 4D in batch-num_filter-y-x
- Linux书签(02)用linux top命令自行监测和分析服务器CPU、内存、进程等性能
- 服务器间共享无法访问 错误代码:0x80070035
- React:hooks
- atoi() 和strtol区别和用法
- 个性化的Github主页,让你脱颖而出。
- 老博客的日记集之工作之后
- php删除本行数据怎么写,awk命令与实例