昨天晚上刷水题写到一道最大全1正方形,于是兴致勃勃将系列相关都复习了一遍qwq

1.最大子段和 

测试地址:https://www.luogu.org/problem/show?pid=1115

Problem:给出一段序列,选出其中连续且非空的一段使得这段和最大。

Key:f[i]表示以i为终点时的最大子段和,f[i]=max(f[i-1],0)+a[i];ans=max(ans,f[i]);

 1 #include<cmath>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<iostream>
 5 using namespace std;
 6 const int maxn=200009;
 7 int a[maxn],f[maxn];
 8 int main()
 9 {
10     int n;
11     scanf("%d",&n);
12     for(int i=1;i<=n;i++)
13     {
14         scanf("%d",&a[i]);
15     }
16     for(int i=1;i<=n;i++)
17     {
18         f[i]=max(f[i-1],0)+a[i];
19     }
20     int ans=-0x3f3f3f3f;
21     for(int i=1;i<=n;i++)
22     {
23         ans=max(ans,f[i]);
24     }
25     cout<<ans<<endl;
26     return 0;
27 }
Problem#1

相关文章:

  • 2022-12-23
  • 2021-09-26
  • 2021-05-21
  • 2021-04-09
  • 2021-05-17
  • 2022-12-23
猜你喜欢
  • 2021-05-27
  • 2021-07-16
  • 2022-12-23
  • 2022-12-23
  • 2022-01-23
  • 2021-11-18
  • 2021-08-22
相关资源
相似解决方案