POJ3264 Balanced Lineup 线段树基础
来源:互联网 发布:传智python视频百度云 编辑:程序博客网 时间:2024/05/17 20:32
第一次接触线段树。
题意:又见farmer john。
有N只牛,每只牛都有它的身高。
给出任意一个区间[i ,j],叫你求出这个第i只牛到第j只牛这些牛中身高最高的和最低的差值。
思路:线段树。
每个树节点有参数:
L=区间左值
R=区间右值
MAX=区间内身高最大值
MIN=区间内身高最小值
#include<iostream>#define max(a,b) (a>b?a:b)#define min(a,b) (a<b?a:b)using namespace std;const int SUM=150010;const int MAX=(1<<30);const int MIN=-1;struct Node{int l,r,mx,mn;}node[SUM];int mx,mn;int n,q;void buildtree(int index,int begin,int end){node[index].l=begin;node[index].r=end;node[index].mn=MAX;node[index].mx=MIN;if(begin==end){return;}int mid=(begin+end)/2;buildtree(index*2,begin,mid);buildtree(index*2+1,mid+1,end);}void insert(int index,int i,int value){if(node[index].l==i&&node[index].r==i){node[index].mn=value;node[index].mx=value;return ;}node[index].mn=min(node[index].mn,value);node[index].mx=max(node[index].mx,value);int mid=(node[index].l+node[index].r)/2;if(i<=mid){insert(index*2,i,value);}else{insert(index*2+1,i,value);}}void find(int index,int a,int b){if(node[index].l==a&&node[index].r==b){mx=max(node[index].mx,mx);mn=min(node[index].mn,mn);return;}int mid=(node[index].l+node[index].r)/2;if(b<=mid)find(index*2,a,b);else if(a>=mid+1)find(index*2+1,a,b);else{find(index*2,a,mid);find(index*2+1,mid+1,b);}}int main(){scanf("%d%d",&n,&q);buildtree(1,1,n);int h;for(int i=1;i<=n;i++){scanf("%d",&h);insert(1,i,h);}int a,b;for(int i=1;i<=q;i++){mn=MAX;mx=MIN;scanf("%d%d",&a,&b);find(1,a,b);printf("%d\n",mx-mn);}return 0;}
- POJ3264 Balanced Lineup 线段树基础
- Poj3264 Balanced Lineup 线段树基础题
- Balanced Lineup poj3264 线段树
- poj3264,Balanced Lineup,线段树
- poj3264 Balanced Lineup(线段树)
- poj3264 Balanced Lineup(线段树)
- POJ3264 Balanced Lineup(线段树)
- POJ3264 Balanced Lineup 【线段树】
- POJ3264 Balanced Lineup(线段树应用)
- Balanced Lineup(poj3264,线段树入门)
- POJ3264 Balanced Lineup 【线段树】+【单点更新】
- POJ3264 Balanced Lineup RMQ 线段树
- POJ3264 Balanced Lineup(线段树入门)
- POJ3264--Balanced Lineup(线段树模板题)
- POJ3264 Balanced Lineup 线段树|ST表
- 线段树之POJ3264 Balanced Lineup
- POJ3264 Balanced Lineup 线段树||RMQ
- 【POJ3264】Balanced Lineup,线段树入门
- 十六进制的TXT文件怎么以十六进制读出来?
- 将windows下编辑好的文件(GBK)转换成Linux下的格式(UTF8)
- [赏析]10个最“优秀”的代码注释
- 清空剪切板和回收站
- 为非IE浏览器添加mouseenter,mouseleave事件
- POJ3264 Balanced Lineup 线段树基础
- 插件开发或RCP中如何通过actions扩展点配置工具栏按钮(插入到指定的ToolBarManger中)
- 玩转S3C6410之二 s3c-u-boot-1.1.6配置、编译、链接分析(一)
- 面向对象学习记录3
- 如何构建一个带有自己标签的Eclipse?
- 使用GDB调试Android 4.0中的WebKit
- UltraWinGrid使用心得(C#)
- C++实现Creational - Simple Factory模式
- Html学习笔记(2)列表/锚