hihoCoder#1070 RMQ问题再临
2015-04-01 14:39
239 查看
原题地址
模拟题,naive算法即可过,想着顺便练习一下ST吧,结果还超时了。。。
看来ST真不适合处理动态修改的问题,连naive算法的效率都不如。
超时的ST代码:
Naive代码:
模拟题,naive算法即可过,想着顺便练习一下ST吧,结果还超时了。。。
看来ST真不适合处理动态修改的问题,连naive算法的效率都不如。
超时的ST代码:
#include <iostream> using namespace std; #define MAX_NODE 10008 int N, Q; int st[MAX_NODE][32]; void build() { for (int j = 1; (1 << j) <= N; j++) for (int i = 0; i + (1 << j) <= N; i++) st[i][j] = min(st[i][j - 1], st[i + (1 << (j - 1))][j - 1]); } int query(int l, int r) { int len = r - l + 1; int i = 0; while ((1 << (i + 1)) <= len) i++; return min(st[l][i], st[r - (1 << i) + 1][i]); } void update(int p, int v) { st[p][0] = v; for (int j = 1; p + (1 << j) - 1 <= N || p - (1 << j) + 1 >= 0; j++) for (int i = max(p - (1 << j) + 1, 0); i + (1 << j) - 1 <= N; i++) { st[i][j] = min(st[i][j - 1], st[i + (1 << (j - 1))][j - 1]); } } int main() { scanf("%d", &N); for (int i = 0; i < N; i++) scanf("%d", &(st[i][0])); build(); scanf("%d", &Q); while (Q--) { int t, a, b; scanf("%d%d%d", &t, &a, &b); if (!t) printf("%d\n", query(a - 1, b - 1)); else update(a - 1, b); } return 0; }
Naive代码:
#include <iostream> using namespace std; #define MAX_NODE 10008 int N, Q; int w[MAX_NODE]; int query(int l, int r) { int res = w[l]; for (int i = l; i <= r; i++) { res = min(res, w[i]); } return res; } void update(int p, int v) { w[p] = v; } int main() { scanf("%d", &N); for (int i = 0; i < N; i++) scanf("%d", &(w[i])); scanf("%d", &Q); while (Q--) { int t, a, b; scanf("%d%d%d", &t, &a, &b); if (!t) printf("%d\n", query(a - 1, b - 1)); else update(a - 1, b); } }
相关文章推荐
- hihoCoder #1070 RMQ问题再临
- hihoCoder#1077 RMQ问题再临-线段树
- HIHO #1077 : RMQ问题再临-线段树
- hihocoder #1077 RMQ问题再临-线段树
- [hihocoder 1070]RMQ问题再临
- RMQ问题再临
- [HihoCoder]#1077 : RMQ问题再临-线段树
- hihoCoder #1077-> RMQ问题再临-线段树
- hiho #1077 : RMQ问题再临-线段树
- 线段树水题 #1077 : RMQ问题再临-线段树
- hihoCoder 1077 RMQ问题再临-线段树
- #1070 : RMQ问题再临
- HIHO #1070 : RMQ问题再临
- hiho刷题日记——第十九天RMQ问题再临-线段树
- Hihocoder #1077 : RMQ问题再临-线段树(线段树:结构体建树+更新叶子往上+查询+巧妙使用father[]+线段树数组要开大4倍 *【模板】)
- #1077 : RMQ问题再临-线段树
- 1077 RMQ问题再临-线段树
- HiHo #1070 && 1077 : RMQ问题再临 【RMQ-线段树】
- #1077 : RMQ问题再临-线段树(线段树)
- hiho一下 第十九周 RMQ问题再临-线段树