洛谷题目链接

题目赋值出来格式有问题,所以我就只放题目链接了

下面为ac代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn=+;
ll a[maxn];//存放输入的数据
ll f[maxn];//用来递推
int main()
{
ll n;
cin>>n;
for(ll i=;i<=n;i++)
scanf("%lld",&a[i]);//输入数据 for(ll i=;i<=n;i++)
{
f[i]=max(a[i],a[i]+f[i-]);
} ll ans=f[];//先给ans赋初值为f[i] for(ll i=;i<=n;i++)//这里的意思是让ans等于f[1~n]中最大的
if(f[i]>ans)
ans=f[i]; cout<<ans<<endl; }

点击加号展开代码

文字讲解(代码中也有部分注释):

f[i]数组的意义是以a[i]为末尾的序列中最大的总和

比如说序列1 3 4

那么f[1]=1,f[2]=1+3=4,f[3]=1+3+4=8

然后如果从左往后递推,也就是f[i],i从1~n

f[i],可以等于a[i],也可以等于f[i-1]+a[i]

这两个要看谁大,所以要用max函数,具体的递推方程就是:

f[i]=max(a[i],a[i]+f[i-1])

比如说当f[i-1]=4,a[i]=-1,那么f[i]就肯定选和f[i-1]合并比较好

那么如果f[i-1]=-1,a[i]=4,此时f[i]=a[i]能保证f[i]是以a[i]为末尾的序列中最大的总和

类似的栗子还有好多,可以自己举栗子看看

接下来推荐一道类似的知识点题目:

最长不下降子序列

最长上升子序列(动态规划递推)

再贴一次代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn=+;
ll a[maxn];//存放输入的数据
ll f[maxn];//用来递推
int main()
{
ll n;
cin>>n;
for(ll i=;i<=n;i++)
scanf("%lld",&a[i]);//输入数据 for(ll i=;i<=n;i++)
{
f[i]=max(a[i],a[i]+f[i-]);
} ll ans=f[];//先给ans赋初值为f[i] for(ll i=;i<=n;i++)//这里的意思是让ans等于f[1~n]中最大的
if(f[i]>ans)
ans=f[i]; cout<<ans<<endl; }

最大子段和(洛谷P1115,动态规划递推)的更多相关文章

  1. NOIP 2008 传纸条(洛谷P1006,动态规划递推,滚动数组)

    题目链接:P1006 传纸条 PS:伤心,又想不出来,看了大神的题解 AC代码: #include<bits/stdc++.h> #define ll long long using na ...

  2. NOIP 2006 金明的预算方案(洛谷P1064,动态规划递推,01背包变形,滚动数组)

    一.题目链接:P1064 金明的预算方案 二.思路 1.一共只有五种情况 @1.不买 @2.只买主件 @3.买主件和附件1(如果不存在附件也要运算,只是这时附件的数据是0,也就是算了对标准的结果也没影 ...

  3. AC日记——最大子段和 洛谷 P1115

    题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 输入文件maxsum1.in的第一行是一个正整数N,表示了序列的长度. 第2行包含N个绝对值不大于10000 ...

  4. 最长上升子序列(动态规划递推,LIS)

    1759:最长上升子序列 题目: 总时间限制: 2000ms 内存限制: 65536kB 描述 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的 ...

  5. 洛谷p1115 最大子段和

    题目链接: 最大子段和 题目分析: 动态规划O(n)求解,设f[i]表示以i为终点的最大子段和 分两种情况: 若f[i-1]>0,则显然f[i]=f[i-1]+a[i](a[i]必须包含在内) ...

  6. P1759 通天之潜水(不详细,勿看)(动态规划递推,组合背包,洛谷)

    题目链接:点击进入 题目分析: 简单的组合背包模板题,但是递推的同时要刷新这种情况使用了哪些物品 ac代码: #include<bits/stdc++.h> using namespace ...

  7. P2347 砝码称重(动态规划递推,背包,洛谷)

    题目链接:P2347 砝码称重 参考题解:点击进入 纪念我第一道没理解题意的题 ''但不包括一个砝码也不用的情况'',这句话我看成了每个砝码起码放一个 然后就做不出来了 思路: 1.这题数据很小,10 ...

  8. NOIP2000方格取数(洛谷,动态规划递推)

    先上题目: P1004 方格取数 下面上ac代码: ///如果先走第一个再走第二个不可控因素太多 #include<bits/stdc++.h> #define ll long long ...

  9. P1541 乌龟棋 题解(洛谷,动态规划递推)

    题目:P1541 乌龟棋 感谢大神的题解(他的写的特别好) 写一下我对他的代码的理解吧(哎,蒟蒻就这能这样...) 代码: #include<bits/stdc++.h> #define ...

随机推荐

  1. c# IP从192.168.1.1转成int类型

    找了一些资料,总结如下: 方法1 .net提供的方法转换IP地址 //字符串转换为数字 System.Net.IPAddress ipaddress = System.Net.IPAddress.Pa ...

  2. Real-Time Compressive Tracking,实时压缩感知跟踪算法解读

    这是Kaihua Zhang发表在ECCV2012的paper,文中提出了一种基于压缩感知(compressive sensing)的单目标跟踪算法,该算法利用满足压缩感知(compressive s ...

  3. libnids 显示UDP数据报,编译,运行,正确。

    #include<stdio.h>#include<nids.h>#include<string.h>#include <sys/socket.h>#i ...

  4. 2008提权之突破系统权限安装shift后门

    大家都知道08权限的系统权限设置很严格,且在2003系统中常用到的溢出工具都失效.面对限制IP连接的情况 我们及时拿到system权限 有账号也上不去 这种情况下只能弄shift后门 或者放大镜了.但 ...

  5. 10.19NOIP模拟赛(DAY2)

    /* 正解O(n)尺取法orz 我写的二分答案.本来以为会被卡成暴力分...... 这个-'0'-48是我写的吗........我怎么不记得... */ #include<bits\stdc++ ...

  6. [App Store Connect帮助]六、测试 Beta 版本(3.1)管理测试员:添加内部测试员

    您可以添加至多 25 个内部测试员(您的 App Store Connect 用户)使用“TestFlight Beta 版测试”来测试您的 App.在您上传了至少一个构建版本之后,才可添加测试员. ...

  7. 慕课网4-6 编程练习:jQuery后排兄弟选择器

    4-6 编程练习 结合所学的兄弟选择器" ~ ",实现如下图所示效果: 任务 (1)使用兄弟选择器" ~ "将技术语言的背景色变成红色 (2)使用jQuery的 ...

  8. 【计蒜客习题】两仪剑法(gcd)

    两仪剑法是武当派武功的高级功夫,且必须 2 个人配合使用威力才大.同时该剑法招数变化太快.太多.设武当弟子甲招数变化周期为 n,武当弟子乙招数变化周期为 m,两弟子同时使用该剑法,当 2 人恰好同时达 ...

  9. Java多线程(八) synchronized 抛出异常锁自动解除

    当一个线程执行的代码出现异常时,其所持有的锁会自动释放 public class MyObject { private int i = 1; synchronized public void meth ...

  10. Oracle取查询结果数据的第一条记录SQL

    Oracle取查询结果数据的第一条记录SQL: ; ;