线段树入门(一)
来源:互联网 发布:打印机排版软件 编辑:程序博客网 时间:2024/06/05 05:05
最近做题碰到好几次线段树问题,都不会写,尴尬死了,在这坑了很多次了,就决定好好学习一下线段树,看网上的大神视频有点模糊的对线段树有点印象,下面抄了人家的代码,自己略加理解过得一道线段树水题hdu1754
I Hate It
Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 83538 Accepted Submission(s): 32097
Problem Description
很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。
这让很多学生很反感。
不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。
Input
本题目包含多组测试,请处理到文件结束。
在每个测试的第一行,有两个正整数 N 和 M ( 0
#include<stdio.h>#include<math.h>#define N 200200int max(int a,int b){ if(a>b) return a; return b;}struct vv{ int l,r,v;}a[N*4];int f[N];void buildT(int i,int l,int r)//创建线段树{ a[i].l=l; a[i].r=r; a[i].v=0; if(l==r) { f[l]=i; return; } buildT(i*2,l,(int)(floor(l+r)/2.0)); buildT(i*2+1,(int)(floor(l+r)/2.0)+1,r);}void up(int i)//更新节点{ if(i==1) return; int fi=i/2; int b=a[fi*2].v; int c=a[fi*2+1].v; a[fi].v=max(b,c);//更新父节点为子节点最大值 up(i/2); } int Max;void Qe(int i,int l,int r){ if(a[i].l==l&&a[i].r==r) { Max=max(a[i].v,Max); return; } i*=2; if(l<=a[i].r) { if(r<=a[i].r) Qe(i,l,r); else Qe(i,l,a[i].r); } i++; if(r>=a[i].l) { if(l>=a[i].l) Qe(i,l,r); else Qe(i,a[i].l,r); }}int main(){ int n,m,x; while(scanf("%d%d",&n,&m)!=EOF) { buildT(1,1,n); for(int i=1;i<=n;i++) { scanf("%d",&x); a[f[i]].v=x; up(f[i]); } char s[100]; int c,d; while(m--) { scanf("%s",s); scanf("%d%d",&c,&d); if(s[0]=='Q') { Max=0; Qe(1,c,d); printf("%d\n",Max); } else { a[f[c]].v=d; up(f[c]); } } } return 0;}
还没有看太透彻,明天继续加油!
阅读全文
0 0
- 线段树入门(一)
- 线段树入门(一)
- (一)线段树入门--区间最值查询
- (一)线段树入门--补充与其他模板
- 线段树总结(一) 入门篇
- 线段树(一)
- 线段树(一)
- 线段树入门(1)
- 线段树入门(转!!!!)
- 线段树 (入门篇)
- 【线段树】线段树入门
- [线段树]线段树 入门
- 线段树学习(一)
- 线段树学习(一)
- 线段树(一)HDU1166
- 数据结构-----线段树(一)
- 【线段树】线段树入门之入门
- 【线段树】线段树入门之入门
- WEBAPI querySelector以及queryselectorAll方法详解
- 安卓自定义View----实现TextView可设置drawable宽高度
- JAVA阻塞队列LinkedBlockingQueue 以及非阻塞队列ConcurrentLinkedQueue 的区别
- log4j.properties 详解
- Gym
- 线段树入门(一)
- 前缀式计算
- 数据分析与数据挖掘的区别
- Ubantu安装Vim(VirtualBox虚拟机)
- Nginx学习之十二-负载均衡-加权轮询策略剖析
- 几种去重算法的实现
- csv文件数据导入到hive操作说明
- 词向量源码解析:(5.5)ngram2vec源码解析之pairs2vocab
- HTML meta标签总结与属性使用介绍