Luogu关卡2-13线性数据结构(2017年10月)
Posted zhangwanying
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luogu关卡2-13线性数据结构(2017年10月)相关的知识,希望对你有一定的参考价值。
任务说明:数组,链表,队列,栈,都是线性结构。巧用这些结构可以做出不少方便的事情。
约瑟夫问题
P1115 最大子段和
做了这个题才颠覆了我对最大字段和的认识。
以前默认的解法就是用dp[i] 表示 a[0..i] 的和,然后用二重循环相减,求出最大子段和。
提交了发现才过了两个点,剩下的三个点TLE。
然后看了题解才发现原来可以这么做:就是用一个变量来记录读进来数字的当前子段和,如果发现这个变量(当前子段和)比零小,那么就把它置0。因为后面那一坨不论是啥,前面加个负数都不划算,所以这么解最优。
时间复杂度O(N), 空间复杂度O(1)
1 #include <iostream> 2 #include <cstdio> 3 #include <vector> 4 #include <climits> 5 using namespace std; 6 7 int main () { 8 int n; 9 cin >> n; 10 int ans = INT_MIN, dp = 0; 11 for (int i = 1; i <= n; ++i) { 12 int x; 13 cin >> x; 14 if (i == 1) { 15 dp = ans = x; 16 } else { 17 dp = dp + x > 0 ? dp + x : x; 18 } 19 ans = max(ans, dp); 20 } 21 cout << ans << endl; 22 return 0; 23 }
表达式括号匹配
队列安排
后缀表达式
以上是关于Luogu关卡2-13线性数据结构(2017年10月)的主要内容,如果未能解决你的问题,请参考以下文章
Luogu关卡1-8BOSS战-入门综合练习2(2017年10月)