POJ 1745 I HATE IT(线段树)
来源:互联网 发布:小浣熊水浒传108将淘宝 编辑:程序博客网 时间:2024/05/22 00:53
http://blog.acmj1991.com/?p=677
题意:自己看
思路:这题是区间插入最大值和求区间最大值,所以用线段树
#include<stdio.h>#include<string.h> #define maxN 200010int num,n,m,key[maxN];struct node{ int l,r,ln,rn,maxx;}po[2*maxN]; int max(int x,int y){return x>y?x:y;}int Buildtree(int l,int r){ int m=num++; po[m].l=l,po[m].r=r; if(l==r)return po[m].maxx=key[r]; int mid=(l+r)>>1; po[m].ln=num; po[m].maxx=max(po[m].maxx,Buildtree(l,mid)); po[m].rn=num; po[m].maxx=max(po[m].maxx,Buildtree(mid+1,r));}void add(int k,int v,int st){ po[st].maxx=max(po[st].maxx,v); if(po[st].l==k&&po[st].r==k)return ; int mid=(po[st].l+po[st].r)>>1; if(k<=mid)add(k,v,po[st].ln); else add(k,v,po[st].rn);}int query(int l,int r,int st){ if(po[st].l==l&&po[st].r==r) return po[st].maxx; int mid=(po[st].r+po[st].l)>>1; if(r<=mid)return query(l,r,po[st].ln); else if(l>mid)return query(l,r,po[st].rn); else return max(query(l,mid,po[st].ln),query(mid+1,r,po[st].rn));} int main(){ while(~scanf("%d%d",&n,&m)) { char str[10]; int u,v; num=1; memset(po,0,sizeof(po)); for(int i=1;i<=n;i++) scanf("%d",&key[i]); Buildtree(1,n); while(m--){ scanf("%s%d%d",str,&u,&v); if(str[0]=='U') add(u,v,1); else printf("%d\n",query(u,v,1)); } }}
- POJ 1745 I HATE IT(线段树)
- poj 1754 I Hate It 线段树
- I Hate It (线段树)
- 线段树:I Hate It
- i hate it 线段树
- I Hate It 【线段树】
- I Hate It---线段树
- I hate it --线段树
- I Hate It (线段树)
- 线段树i hate it
- I Hate It(线段树)
- poj 1754 I Hate It (线段树/分块)
- I hate it HDU【线段树】
- 线段树--【HDU I Hate It】
- HDU 1754 I Hate It 线段树
- [hdu] 1754 I hate it -- 线段树
- hdu 1754 -- I Hate It (线段树)
- HDU 1754 I Hate It 线段树
- ABAP-FI常用BAPI
- 在控制台中启动osgi框架
- D3D 纹理映射
- Python函数式编程指南:目录和参考(转载)
- 理解UI线程——swt, Android, 和Swing的UI机理
- POJ 1745 I HATE IT(线段树)
- Equinox OSGi 主要的控制台命令表
- 中文过滤器(Filter)
- Format的那些事儿
- 7个致命的Linux命令
- 浅谈线程关系(Java)
- 谷歌125亿美元收购摩托罗拉移动(谷歌又创新天地)
- osgi初探
- 这样现实的社会,从零做起,其路漫漫修远兮