codeforces 602B (队列)
来源:互联网 发布:sql语句多表关联查询 编辑:程序博客网 时间:2024/05/17 23:05
题意是给一个序列寻找最长的子区间使得子区间中最大元素和最小元素的差小于等于1
用队列瞎搞,先把序列处理一下,把有相邻元素相同的合并,把每个元素依次放进队列里。
如果队列是空,直接放进去;如果这个元素和队尾元素差大于1,就清空队列,计算一次区间长度;否则就用即将入队的元素和队次尾元素比较。(因为维护的队列里面的元素必定满足abababab型)
#include <bits/stdc++.h>using namespace std;#define maxn 111111struct node { int l, r; int num;}p[maxn];int a[maxn];node que[maxn], now;int n;int cnt;int main () { scanf ("%d", &n); cnt = 0; for (int i = 1; i <= n; i++) { scanf ("%d", &a[i]); } int cnt = 1; p[cnt].l = 1, p[cnt].r = 1, p[cnt].num = a[1]; for (int i = 2; i <= n; i++) { if (a[i] == a[i-1]) { p[cnt].r = i; } else { cnt++; p[cnt].l = i; p[cnt].r = i; p[cnt].num = a[i]; } } int s = 1, t = 1; int cur = 1; int ans = 0; while (cur <= cnt) { if (s == t) { que[t++] = p[cur]; } else { now = p[cur]; if (abs (now.num - que[t-1].num) <= 1) { if (t-s > 1 && que[t-2].num != now.num) { ans = max (ans, que[t-1].r-que[s].l+1); s = t-1; que[t++] = now; } else que[t++] = now; } else { ans = max (ans, que[t-1].r-que[s].l+1); s = t; que[t++] = now; } } cur++; } ans = max (ans, que[t-1].r-que[s].l+1); printf ("%d\n", ans); return 0;}
0 0
- codeforces 602B (队列)
- CodeForces 128B - String 优先队列暴力..
- CodeForces 377B 优先队列 + 二分
- codeforces 128 B. String 优先队列
- codeforces 651B Beautiful Paintings【优先队列】
- 单调队列 CodeForces 91B Queue
- codeforces 446B(优先队列)
- CodeForces 644 B.Processing Queries(队列)
- CodeForces 128 B.String(优先队列)
- codeforces 602B
- Codeforces 602B
- Codeforces 377B . Preparing for the Contest【优先队列】
- CodeForces 520B Two Buttons bfs+优先队列
- Codeforces Round #315 (Div. 2)569B Inventory(队列)
- CodeForces 601B Lipshitz Sequence (单调队列)
- CodeForces 319B-Psychos in a Line(单调队列)
- Codeforces Round #346 (Div. 2) B - Qualifying Contest 优先队列
- CodeForces - 91B 单调队列 或 线段树
- 10 条提升 Android 性能的建议
- java array数组是不是类
- OS X El Capitan 10.11 Cocoapods报错解决方案
- vm中增加硬盘 扩大原来vg
- java窗口背景颜色怎么设定?用setBackground()好像不行,请大侠指教!
- codeforces 602B (队列)
- SpringMVC介绍之Validation
- 在64位SQL Server中创建Oracle的链接服务器
- Android 5.0 Material Design酷炫风格的开源项目集合
- Latex初探(二): 基本用法
- HttpClient 4.3超时设置
- BZOJ 题目1002 [FJOI2007]轮状病毒(高精度+基尔霍夫矩阵)
- Java基础——线程,锁机制
- Intent传递Parcelable List对象