P3009 [USACO11JAN]Profits S

https://www.luogu.com.cn/problem/P3009
涉及知识点:动态规划DP,最大子段和
橙色题

思路:看到题解区没什么简短的dp代码,处理过程有的地方复杂化了,于是忍不住来一发水文。

这是道线性dp(废话),所以可以边读入边输出。本题也不需要一个a数组,一个f数组,直接合成一个数组凑合着用。

a[i]表示前i个数的最大子段和。

转移方程:a[i] = max(a[i], a[i] + a[i - 1])

由于a[n]不一定是最大值,所以设变量ans随循环更新最大值。

最后注意处理全负数的情况就好了。

总而言之,一个循环丰衣足食。


#include <bits/stdc++.h> using namespace std; int n, a[100001], ans = -0x7fffffff; int main() { scanf("%d", &n); for (register int i = 1; i <= n; i++) { scanf("%d", &a[i]); a[i] = max(a[i], a[i] + a[i - 1]); ans = max(a[i], ans); } printf("%d\n", ans); return 0; }

 


__EOF__

本文作者灰の魔女伊蕾娜
本文链接https://www.cnblogs.com/2elaina/p/16527742.html
关于博主:编程小萌新一名,希望从今天开始慢慢提高,一步步走向技术的高峰!
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   -イレイナ  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示