博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj3264
阅读量:6655 次
发布时间:2019-06-25

本文共 2180 字,大约阅读时间需要 7 分钟。

基础线段树

View Code
//poj3264#include 
#include
#include
using namespace std;const int maxn = 50002;struct cnode{ int l, r, nmin, nmax; cnode *pleft, *pright;};int ncount, cow[maxn], n, q, ansmax, ansmin;cnode tree[maxn * 2];void init(){ scanf("%d%d",&n,&q); ncount = 0;}void buildtree(cnode *pnow, int start, int end){ int mid; pnow -> l = start; pnow -> r = end; pnow -> nmin = 1000001; pnow -> nmax = -1; mid = (start + end) / 2; if (start != end) { ncount++; pnow -> pleft = tree + ncount; ncount++; pnow -> pright = tree + ncount; buildtree(pnow -> pleft, start, mid); buildtree(pnow -> pright, mid + 1, end); }}void insert(cnode *proot, int i, int v){ int mid; if (proot -> l == i && proot -> r == i) { proot -> nmin = v; proot -> nmax = v; return; } proot -> nmin = _cpp_min(v, proot -> nmin); proot -> nmax = _cpp_max(v, proot -> nmax); mid = (proot -> l + proot -> r) / 2; if (i <= mid) insert(proot -> pleft, i, v); else insert(proot -> pright, i, v);}void query(cnode *proot, int start, int end){ int mid;// if (proot -> nmin >= ansmin && proot -> nmax <= ansmax)// return; if (proot -> l == start && proot -> r == end) { ansmin = _cpp_min(proot -> nmin, ansmin); ansmax = _cpp_max(proot -> nmax, ansmax); return; } mid = (proot -> l + proot -> r) / 2; if (end <= mid) query(proot -> pleft, start, end); else if (start > mid) query(proot -> pright, start, end); else { query(proot -> pleft, start, mid); query(proot -> pright, mid + 1, end); }}int main(){ int i, t, u; //freopen("t.txt", "r", stdin); init(); buildtree(tree, 0, n - 1); for (i = 0; i < n; i++) { scanf("%d", &t); insert(tree, i, t); } for (i = 0; i < q; i++) { ansmin = 1000001; ansmax = -1; scanf("%d%d", &t, &u); query(tree, t - 1, u - 1); cout << ansmax - ansmin << endl; } return 0;}

转载地址:http://guxto.baihongyu.com/

你可能感兴趣的文章
一张图让你看懂JAVA线程间的状态转换
查看>>
hibernate使用联合主键
查看>>
Yii PHP 框架分析(二)
查看>>
如何在bp框架上使用map构造帮助信息?
查看>>
shell 里的简单比较字符
查看>>
VIM 粘贴代码时恶心的缩进
查看>>
我是被一篇文章吸引过来的!~
查看>>
vsphere 性能排查 基础检查方法
查看>>
corosync+pacemaker实现高可用的MariaDB
查看>>
python 输出彩色终端信息
查看>>
Golang 建立RESTful webservice 接收客户端POST请求发送wav语音文件
查看>>
为什么需要堆?
查看>>
CentOS 7 使用rpm包安装mysql 5.7.18
查看>>
nginx+tomcat+redis实现负载平衡和session共享
查看>>
转帖-linux文件系统
查看>>
mac上面查看路由表
查看>>
Nginx location 斜线问题
查看>>
2018/10/22 Linux 第3周笔记
查看>>
linux特殊权限SUID、SGID、SBIT
查看>>
redhat7.3多路径配置
查看>>