HDU 1754 I Hate It 基础线段树
用区间值m表示这段区间的最大值,一直更新这个区间的最大值,很基础的线段树
#include<iostream>
#include<stdio.h>
using namespace std;
#define N 200005
struct node{int l,r,m;
}tree[N*4];
int a[N];
void build(int left,int right,int i){tree[i].l=left;tree[i].r=right;if(tree[i].l==tree[i].r){tree[i].m=a[tree[i].l];return ;}int mid=(tree[i].l+tree[i].r)>>1;build(left,mid,i*2);build(mid+1,right,i*2+1);tree[i].m=max(tree[i*2].m,tree[i*2+1].m);
}
void updata(int left,int right,int i,int val){// cout<<tree[i].l<<" "<<tree[i].r<<endl;if(left==tree[i].l&&right==tree[i].r){tree[i].m=val;return ;}if(tree[i].l>left || tree[i].r<left) return ;int mid=(tree[i].r+tree[i].l)>>1;updata(left,right,i*2,val);updata(left,right,i*2+1,val);tree[i].m=max(tree[i*2].m,tree[i*2+1].m);
}
int ans=0;
void query(int left,int right,int i){// cout<<"Q 4 5 "<<left<<" "<<right<<" "<<tree[3].m<<endl;if(tree[i].l==left&&tree[i].r==right){if(tree[i].m>ans)ans=tree[i].m;return ;}int mid=(tree[i].l+tree[i].r)>>1;if(mid>=right)query(left,right,i*2);else if(mid<left)query(left,right,i*2+1);else{query(left,mid,i*2);query(mid+1,right,i*2+1);}}
int main(){
// freopen("in.txt","r",stdin);int m,n,x,y;char t[5];while(~scanf("%d%d",&n,&m)){for(int i=1;i<=n;i++)scanf("%d",&a[i]);build(1,n,1);while(m--){scanf("%s %d%d",t,&x,&y);
// cout<<t<<" "<<x<<" "<<y<<endl;if(t[0]=='Q'){ans=0;query(x,y,1);printf("%d\n",ans);}else{updata(x,x,1,y);}}}
}
HDU 1754 I Hate It 基础线段树相关推荐
- 题解报告:hdu 1754 I Hate It(线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某 ...
- hdu 1754 I Hate It(线段树之 单点更新+区间最值)
I Hate It Time Limit: 90 ...
- HDU 1754 I Hate It(线段树)
点我看题目 题意 :又是一道中问题,我就不说题意了.... 思路 : 线段树,这道题跟1166差不多,改一些地方就差不多了. #include <iostream> #include & ...
- [ACM] hdu 1754 I Hate It (线段树,单点更新)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- hdu 1754 I Hate It(线段树/树状数组)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU 1754 I Hate It(线段树单点更改、区间查找最大值)
Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求, ...
- HDU 1754 I hate it【线段树之单点替换区间最值】
Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求, ...
- HDU 1754 I Hate It(线段树版)
题目链接 找最大,这里居然会超时. 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> ...
- 杭电 HDU ACM 1754 I Hate It (线段树)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU - 1255 覆盖的面积(线段树求矩形面积交 扫描线+离散化)
链接:线段树求矩形面积并 扫描线+离散化 1.给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. 2.看完线段树求矩形面积并 的方法后,再看这题,求的是矩形面积交,类同. 求面积时,用被覆 ...
最新文章
- 求组合数python_给定一个序列求指定位数的排列组合数
- 在正确的方向坚持下去,一直坚持下去,直到有成果
- java中apache安装与配置_Apache应用服务器之四:Apache与Tomcat安装与配置
- 从wordpress到octopress
- InterlockedIncrement
- Linux中$PATH详解
- [HDOJ]1018. Big Number
- centos6.5安装mono
- .Net中的数字和日期格式化规则助记词
- matlab green函数,地基土的传Green函数编辑中……
- mysql sql语句递归查询语句_SQL实现MYSQL递归查询的方法
- PHP开发APP接口实现--基本篇
- 使用prettier统一编码风格
- 联想y50更换固态硬盘_【联想Y50-70】更换固态硬盘,极速开机~
- 如何在Node中将PDF每页转换为图片以及PDF各种操作
- 美团外卖小哥竟开发阿里云盘,抢先首发
- 无法启动系统时间服务器,Win10系统不能启动Windows Time服务怎么办?
- MTK Camera 基础知识
- 小红书用户画像分析_2020小红书爆品打造策略及案例分析!
- android 模拟器 启动,android开发之启动模拟器并安装游戏apk