I Hate It
来源:互联网 发布:《南风知我意》琰阙 编辑:程序博客网 时间:2024/06/06 08:49
C - I Hate It
#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;struct node{int l, r, sum,_max;}dp[200005*4];void Creat(int l, int r, int i)//初始化线段树{dp[i].l = l;dp[i].r = r;dp[i].sum = dp[i]._max = 0;if (l == r)//当为最小子区间时输入值{scanf("%d", &dp[i].sum);dp[i]._max = dp[i].sum;return;}int mid = (l + r) / 2;//分半Creat(l, mid, i * 2);Creat(mid + 1, r, i * 2 + 1);dp[i]._max = max(dp[i * 2]._max, dp[i * 2 + 1]._max);//第i层的最大值更新}void Change(int a, int b, int i)//将第a个位置改成b{if (dp[i].l == dp[i].r){dp[i]._max = b;return;}int mid = (dp[i].l + dp[i].r) / 2;if (a <= mid){Change(a, b, i * 2);}else{Change(a, b, i * 2 + 1);}dp[i]._max = max(dp[i * 2]._max, dp[i * 2 + 1]._max);//修改值}int Find(int l, int r, int i){if (l == dp[i].l&&dp[i].r == r){return dp[i]._max;}int mid = (dp[i].l + dp[i].r) / 2;if (r <= mid){return Find(l, r, i * 2);}else if (l > mid){return Find(l, r, i * 2 + 1);}else{return max(Find(l, mid, i * 2), Find(mid + 1, r, i * 2 + 1));}}int main(){int n, m;while (cin >> n >> m){Creat(1, n, 1);char st[2];for (int i = 0; i < m; i++){scanf("%s", st);int a, b;scanf("%d%d", &a, &b);if (st[0] == 'Q'){cout << Find(a, b, 1) << endl;}else{Change(a, b, 1);}}}return 0;}
0 0
- I Hate It
- hdu1754 I Hate It
- HDU1754 I Hate It
- BIT1083 I Hate It
- HDU1754:I Hate It
- HDU1754--I Hate It
- HDU1754 I hate it
- I Hate It tzc
- hdu_1754 I Hate It
- hdu1754 I Hate It
- HDU1754:I Hate It
- I Hate It
- hdu1754 I Hate It
- I Hate It
- I Hate It
- hdu1754 I Hate It
- hdu1754 I Hate It
- hdu1754 I Hate It
- CodeForces 787B Not Afraid
- 虚拟机ubuntu扩容
- java中死锁的概念是什么给个例子
- String类(****)
- POJ 2496 Apple Tree
- I Hate It
- 8 种 NoSQL 数据库系统对比
- 67. Add Binary
- css字体和背景颜色
- node.js中的模块知识总结
- 进程通信——管道通信
- el表达式
- Billboard
- c++ 标准库中的容器collection基础