tyvj p1039 忠诚2
来源:互联网 发布:剑三花哥脸型数据 编辑:程序博客网 时间:2024/05/01 01:54
原题链接:http://www.tyvj.cn/p/1039
线段树的基础题,点更新吧。不过我直接写成区间更新,反正点更新也是区间更新的一个特列。
具体如下:
#include<stdlib.h>#include<string.h>#define _min(a,b) ((a)>(b)?(b):(a))#define INF ~0u>>1#define Max_N 100010typedef struct _seg{ int val, addMark;}SegTree;SegTree seg[Max_N << 2];int arr[Max_N];void built(int root, int x, int y){ seg[root].val = 0; if (x == y){ seg[root].val = arr[x]; return; } else { int mid = (x + y) >> 1; built(root << 1, x, mid); built(root << 1 | 1, mid + 1, y); seg[root].val = _min(seg[root << 1].val, seg[root << 1 | 1].val); }}void pushDown(int root){ if (seg[root].addMark != 0){ seg[root << 1].addMark = seg[root].addMark; seg[root << 1 | 1].addMark = seg[root].addMark; seg[root << 1].val = seg[root].addMark; seg[root << 1 | 1].val = seg[root].addMark; seg[root].addMark = 0; }}void update(int root, int _x, int _y, int x, int y, int addVal){ if (x > _y || y < _x) return; if (x <= _x && y >= _y){ seg[root].addMark = addVal; seg[root].val = addVal; return; } pushDown(root); int mid = (_x + _y) >> 1; update(root << 1, _x, mid, x, y, addVal); update(root << 1 | 1, mid + 1, _y, x, y, addVal); seg[root].val = _min(seg[root << 1].val, seg[root << 1 | 1].val);}int query(int root, int _x, int _y, int x, int y){ if (x > _y || y < _x) return INF; if (x <= _x && y >= _y) return seg[root].val; pushDown(root); int mid = (_x + _y) >> 1; int v1 = query(root << 1, _x, mid, x, y); int v2 = query(root << 1 | 1, mid + 1, _y, x, y); return _min(v1, v2);}int main(){#ifdef LOCAL freopen("in.txt", "r", stdin); freopen("out.txt", "w+", stdout);#endif int i, m, n, a, b, c; while (~scanf("%d %d", &m, &n)){ for (i = 1; i <= m; i++) scanf("%d", &arr[i]); built(1, 1, m); for (i = 1; i <= n; i++){ scanf("%d %d %d", &a, &b, &c); if (1 == a){ printf("%d", query(1, 1, m, b, c)); if (i != n) printf(" "); } else update(1, 1, m, b, b, c); } } return 0;}
0 0
- tyvj p1039 忠诚2
- [TYVJ P1039] 忠诚2
- Tyvj 1039 忠诚2
- tyvj-忠诚
- TyvjOJ 题目P1039 忠诚2(线段树单点跟新,区间最小值)
- TYVJ 1038 1039 忠诚、、、、、
- Tyvj 1038 忠诚
- [Tyvj 1038] 忠诚
- Tyvj 1038-1039 忠诚1-2 【线段树】
- tyvj P1038 忠诚 线段树
- tyvj P1039 线段树点修改和区间查询
- 忠诚 && 士兵杀敌(tyvj 1038 && nyoj116)
- tyvj P1038 忠诚 ST表(RMQ)
- tyvj:1038 忠诚 线段树 区间查询
- tyvj1039忠诚2
- 【tyvj1039】忠诚2
- tyvj1039忠诚2
- 【tyvj1039】忠诚2
- RFID理论基础知识(第一次作业)
- My first code kata
- 例题2.1
- 个人爱好编写
- poj1062 最短路
- tyvj p1039 忠诚2
- java面试题总结(二)
- 字符串之排序
- SQL数据库
- IWebbrowser2中C++与JavaScript的交互调用
- hdu 2054-A == B ?
- 筛选法求素数
- 九度OJ1008-最短路径问题 之 dijkstra算法的理解与实现
- 向阮一峰致敬