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详解优化相关推荐

  1. PAT甲级真题目录(按题型整理)(转自柳神)

    转载自:https://www.liuchuo.net/archives/2502?tdsourcetag=s_pcqq_aiomsg 最短路径 1003. Emergency (25)-PAT甲级真 ...

  2. PAT甲级1007 Maximum Subsequence Sum :[C++题解]DP,最大子序列和、求最优的区间方案

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: dp题. 这道题糅合了两个知识点: dp求最值(区间之和) 动态求区间方案:区间之和相等的条件下:要求区间左端点最靠前,如果左端点相 ...

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

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

  4. PAT 1007 Maximum Subsequence Sum

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

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

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

  6. 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 ...

  7. 1007 Maximum Subsequence Sum

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

  8. 1007 Maximum Subsequence Sum

    1007 Maximum Subsequence Sum (25 分) Given a sequence of K integers { N1​, N2​, ..., NK​ }. A continu ...

  9. 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 ...

最新文章

  1. 生活随笔:保险公司来的电话
  2. EF Load之详讲
  3. H.264中IDR帧和I帧区别
  4. 利用Mybatis写第一个数据库操作的程序
  5. win7制作ntp服务器,如何将Win7作为NTP服务器
  6. 面试官系统精讲Java源码及大厂真题 - 20 SynchronousQueue 源码解析
  7. Linux桌面版横评:五、Ubuntu 7.04
  8. java虚拟机-d参数配置_JVM虚拟机参数介绍
  9. locat add filter
  10. matlab imfilter函数,Matlab中fspecial函数 和imfilter函数的用法
  11. 电信 dns服务器 不稳定,网速不稳定的解决方法:修改本地DNS
  12. file_get_contents() 报错failed to open stream: HTTP request failed! HTTP/1.1 505 HTTP Version Not Supp
  13. Redis伪集群搭建
  14. Python输出所有水仙花数(3种方法)
  15. 老黄历吉日吉时查询接口实现及代码示例
  16. 基于matlab的脑瘤mr图像处理_MRI(脑肿瘤)图像处理与分割、颅骨切除
  17. 公钥密码(非对称加密)
  18. Postman搭建mock server接口
  19. SDL Trados 2019 和 SDL Trados 2021 二零二一五月更新
  20. SFTP工具winscp下载与连上docker

热门文章

  1. Spark Standalone架构及安装部署
  2. 关于近期计算机职业新闻,工科类专业“钱景”排行,计算机已成过去式
  3. mxnet报错 Check failed: dshp.ndim() == 4U (3 vs. 4) : Input data should be 4D in batch-num_filter-y-x
  4. Linux书签(02)用linux top命令自行监测和分析服务器CPU、内存、进程等性能
  5. 服务器间共享无法访问 错误代码:0x80070035
  6. React:hooks
  7. atoi() 和strtol区别和用法
  8. 个性化的Github主页,让你脱颖而出。
  9. 老博客的日记集之工作之后
  10. php删除本行数据怎么写,awk命令与实例