码迷,mamicode.com
首页 > 其他好文 > 详细

【Luogu】【关卡2-13】线性数据结构(2017年10月)

时间:2017-10-08 12:57:06      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:div   字段   turn   划算   约瑟夫问题   问题   span   匹配   复杂度   

任务说明:数组,链表,队列,栈,都是线性结构。巧用这些结构可以做出不少方便的事情。

约瑟夫问题  

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 }
View Code

 

表达式括号匹配  

队列安排  

后缀表达式

【Luogu】【关卡2-13】线性数据结构(2017年10月)

标签:div   字段   turn   划算   约瑟夫问题   问题   span   匹配   复杂度   

原文地址:http://www.cnblogs.com/zhangwanying/p/7637024.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!