zoukankan
html css js c++ java
PKU3264线段树解法
#include
<
stdio.h
>
#include
<
string
.h
>
struct
node
{
node
*
pl,
*
pr;
int
left, right;
int
mxa, min;
}
mem[
100000
];
int
memCount;
int
n, q;
int
mxa, min;
node
*
newNode()
{
node
*
pt
=&
mem[memCount
++
];
pt
->
mxa
=-
1
, pt
->
min
=
1000001
;
return
pt;
}
node
*
buildTree(
int
l,
int
r)
{
node
*
root
=
newNode();
root
->
left
=
l;
root
->
right
=
r;
if
(r
-
l
>=
1
)
{
int
mid
=
(l
+
r)
/
2
;
root
->
pl
=
buildTree(l,mid);
root
->
pr
=
buildTree(mid
+
1
,r);
}
return
root;
}
void
update(node
*
root,
int
i,
int
a)
{
if
(root
->
left
==
i
&&
root
->
right
==
i)
{
root
->
mxa
=
a, root
->
min
=
a;
return
;
}
if
(root
->
min
>
a)
root
->
min
=
a;
if
(root
->
mxa
<
a)
root
->
mxa
=
a;
if
(root
->
pl
->
right
>=
i)
{
update(root
->
pl,i,a);
}
else
{
update(root
->
pr,i,a);
}
}
void
que(node
*
root,
int
i,
int
j)
{
if
(root
->
min
>
min
&&
root
->
mxa
<
mxa)
return
;
if
(root
->
left
==
i
&&
root
->
right
==
j)
{
if
(mxa
<
root
->
mxa)
mxa
=
root
->
mxa;
if
(min
>
root
->
min)
min
=
root
->
min;
return
;
}
if
(root
->
pl
->
right
>=
i)
{
if
(root
->
pl
->
right
>=
j)
que(root
->
pl, i, j);
else
{
int
mid
=
(root
->
left
+
root
->
right)
/
2
;
que(root
->
pl,i,mid);
que(root
->
pr,mid
+
1
,j);
}
}
else
{
que(root
->
pr,i,j);
}
}
int
main()
{
while
(scanf(
"
%d%d
"
,
&
n,
&
q)
==
2
)
{
memCount
=
0
;
node
*
root
=
buildTree(
1
, n);
int
i, a;
for
(i
=
0
;i
<
n;i
++
)
{
scanf(
"
%d
"
,
&
a);
update(root,i
+
1
,a);
}
int
x, y;
for
(i
=
0
;i
<
q;i
++
)
{
scanf(
"
%d%d
"
,
&
x,
&
y);
mxa
=-
1
, min
=
1000001
;
que(root,x, y);
printf(
"
%d\n
"
,mxa
-
min);
}
}
return
0
;
}
查看全文
相关阅读:
李洪强九宫格的实现
iOS开发多线程篇 11 —自定义NSOperation
CALayer3-层的属性
网络编程小结
iOS开发多线程篇 10 —NSOperation基本操作
CALayer2-创建新的层
iOS开发之多文件上传
三级联动
用 ERD 盘解决 Win8 自己主动更新后不能启动的问题
hdu1028(母函数+DP)
原文地址:https://www.cnblogs.com/SQL/p/932354.html
最新文章
c++下面的一个单例
ARP协议相关介绍
调用ffmpeg库编译时出现common.h:175:47: error: 'UINT64_C' was not declared in this scope
RTMP中FLV流到标准h264、aac的转换
JPEG 及MJPEG开发笔记
使用mp4v2将H264+AAC合成mp4文件
ti8127下godb 开发
linux ffmpeg编译配置安装详解
Skrollr.js -- 使用Skrollr创建视差滚动效果页面
uvaoj-1595:symmetry
热门文章
poj 1191 棋盘切割 (压缩dp+记忆化搜索)
字符串中的空格替换问题(Java版)
Android Studio
获取当前应用版本
Valgrind的用法
BAT面试题
例说linux内核与应用数据通信(一):加入一个系统调用
缺乏这四项技能,珠海碰上雷军都不好意思说自己是做产品的
Hash索引和BTree索引
java8_api_net
Copyright © 2011-2022 走看看