CSU 1529 - Equator(双端队列)
来源:互联网 发布:智能电视软件开发 编辑:程序博客网 时间:2024/06/01 10:37
题目:
Description
Input
Output
Sample Input
33 1 2 38 4 5 -1 -1 1 -1 -1 52 -1 -1
Sample Output
6140
循环序列,求出最大的子串和。
思路:
双端队列,。
维护一个不大于n的队列,队尾减队首更新答案。
AC.
#include <iostream>#include <cstdio>#include <cmath>using namespace std;const int INF = 1e5;const int maxn = 1e6+5;int a[maxn*2], sum[maxn*2];int deq[maxn*2];int main(){ //freopen("in", "r", stdin); int T; scanf("%d", &T); while(T--) { int n; scanf("%d", &n); sum[0] = 0; for(int i = 1; i <= n; ++i) { scanf("%d", &a[i]); a[i+n] = a[i]; sum[i] = sum[i-1] + a[i]; } for(int i = n+1; i <= 2*n; ++i) { sum[i] = sum[i-1] + a[i]; } int ans = 0; deq[0] = 0; int s = 0, t = -1; for(int i = 1; i <= 2*n; ++i) { while(s <= t && sum[i] < sum[deq[t]]) { ans = max(ans, sum[deq[t]] - sum[deq[s]]); t--; } while(s <= t && i - deq[s] > n) { ans = max(ans, sum[deq[t]] - sum[deq[s]]); s++; } deq[++t] = i; } ans = max(ans, sum[deq[t]] - sum[deq[s]]); printf("%d\n", ans); } return 0;}
0 0
- CSU 1529 Equator(双端队列)
- CSU 1529 - Equator(双端队列)
- 【CSU 1529】Equator (前缀和,双端队列)
- CSU 1529 Equator DP
- CSU 1529: Equator(dp)
- scu1529: Equator (DP+贪心)
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- 9.3 sift,surf匹配代码
- java.rmi.Naming和java.rmi.registry.LocateRegistry的区别
- 7.3 qt_总结系列_13(Qt使用总结,续...)
- Keepalived原理与实战
- struts与urlwriter实现javaweb伪静态或者url隐藏
- CSU 1529 - Equator(双端队列)
- 第三章第46题Fibonacci数
- 7.2 QT系列笔记总结
- C++静态库与动态库深入研究
- 【Hive自定义UDF函数】 与 【hive字符串函数】
- 第九周上级项目1 复数类中的运算符重载(续)
- Stack类模板
- windows下ubuntu安装
- 计算机组成第七周:存储层次结构