HDOJ 1754 I Hate It
来源:互联网 发布:中级软件测评师真题 编辑:程序博客网 时间:2024/05/16 05:26
类型:单点更新,线段树 / 树状数组
代码:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;inline int Rint() {int x; scanf("%d", &x); return x;}#define MAXN 200002//#define MAX(x, y) (x)>(y)? (x):(y)用这个算MAX(ret, query(L, R, a[e].mid+1, r, e<<1|1)),会超时,就因为多query了一次?struct node {int l, mid, r, v;}a[MAXN*4];//v表示分数int n, m;void pushUp(int e) { a[e].v=max(a[e<<1].v, a[e<<1|1].v); }void build(int l, int r, int e){a[e].l=l, a[e].r=r;if(l==r) a[e].v=Rint();else{a[e].mid=(l+r)>>1;build(l, a[e].mid, e<<1);build(a[e].mid+1, r, e<<1|1);pushUp(e);}}void update(int p, int b, int l, int r, int e){if(l==r) { a[e].v = b; }else{if(p<=a[e].mid) update(p, b, l, a[e].mid, e<<1);else update(p, b, a[e].mid+1, r, e<<1|1);pushUp(e);}}int query(int L, int R, int l, int r, int e){int ret=0;if(L<=l && r<=R)ret=a[e].v;//正常情况下总有一个等号成立else//l L R r{if(L<=a[e].mid) ret = max(ret, query(L, R, l, a[e].mid, e<<1));if(a[e].mid<R) ret = max(ret, query(L, R, a[e].mid+1, r, e<<1|1));}return ret;}int main(){while(scanf("%d%d", &n, &m)!=EOF){build(1, n, 1);char buf[10];int a, b;while(m--){scanf("%s%d%d", buf, &a, &b);if(buf[0]=='Q') printf("%d\n", query(a, b, 1, n, 1));else update(a, b, 1, n, 1);}}}
- HDOJ 1754 I Hate It
- hdoj 1754 I Hate It
- HDOJ 1754 I Hate It
- HDOJ 1754 - I Hate It
- HDOJ 1754 I Hate It
- HDOJ 1754 I Hate It
- HDOJ 1754 I Hate It
- HDOJ 1754 I Hate It
- Hdoj 1754 I hate it
- hdoj 1754 I Hate It
- HDOJ-1754 I Hate It
- hdoj-1754-I Hate It
- hdoj 1754 I Hate It
- HDOJ 1754-I Hate It
- hdoj 1754 I Hate It
- HDU/HDOJ----1754 I Hate It
- HDOJ 1754 I Hate It(线段树)
- hdoj 1754 I Hate It(线段树)
- 杂记
- ExtJs在IE9上报错:对象不支持“createContextualFragment”属性或方法(解决方案)
- Ant 打 war 包
- 初步学习xml
- 断电故障导致ASM DiskGroup 故障及恢复案例
- HDOJ 1754 I Hate It
- 使用dbcp做为数据库连接池
- 3天搞定的小型B/S内部管理类软件定制开发项目【软件开发实战10步骤详解】
- 1x和3G及相关
- HDOJ 1096 注意最后一个结果之后没有空行
- 【经典C#.NET入门教程】管理软件开发必备知识免费视频教程下载
- 第七章:线程调度、优先级、和关联性
- 利用DataDynamics.SpreadBuilder生成Excel文档
- ant教程详解--javac,java,jar,war,delete,copy,mkdir