博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 2104主席树求区间第k小
阅读量:5282 次
发布时间:2019-06-14

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

题意:求区间第k小

思路:无修改主席树

AC代码:

#include "iostream"#include "iomanip"#include "string.h"#include "stack"#include "queue"#include "string"#include "vector"#include "set"#include "map"#include "algorithm"#include "stdio.h"#include "math.h"#pragma comment(linker, "/STACK:102400000,102400000")#define bug(x) cout<
<<" "<<"UUUUU"<
>1; creat(ls[cur], l, mid); creat(rs[cur], mid+1, r);}void update(int &cur, int l, int r, int p, int last){ cur=++cnt; ls[cur]=ls[last]; rs[cur]=rs[last]; sum[cur] = sum[last]+1; if(l==r) return; int mid=l+r>>1; if(p<=mid) update(ls[cur], l, mid, p, ls[cur]); else update(rs[cur], mid+1, r, p, rs[cur]);}int query(int cur_l, int cur_r, int l, int r, int k){ if(l==r) return l; int t=sum[ls[cur_r]]-sum[ls[cur_l]]; int mid=l+r>>1; if(t>=k) return query(ls[cur_l], ls[cur_r], l, mid, k); else return query(rs[cur_l], rs[cur_r], mid+1, r, k-t);}struct Node{ int id, x; bool friend operator< (Node a, Node b){ return a.x
>n>>m){ for(int i=1; i<=n; ++i){ cin>>a[i].x; a[i].id=i; } sort(a+1,a+1+n); cnt=0; int sz=n;//unique(a+1,a+1+n) - (a+1); ///cout<
<
>l>>r>>k; cout<

 

转载于:https://www.cnblogs.com/max88888888/p/7420702.html

你可能感兴趣的文章
rotate the clock
查看>>
bugku 变量
查看>>
数据库01 /Mysql初识以及基本命令操作
查看>>
数据库02 /MySQL基础数据类型以及多表之间建立联系
查看>>
Python并发编程04/多线程
查看>>
CF461B Appleman and Tree
查看>>
CF1215E Marbles
查看>>
BZOJ2339 HNOI2011卡农(动态规划+组合数学)
查看>>
octave基本操作
查看>>
axure学习点
查看>>
WPF文本框只允许输入数字[转]
查看>>
dom4j 通用解析器,解析成List<Map<String,Object>>
查看>>
第一个项目--用bootstrap实现美工设计的首页
查看>>
使用XML传递数据
查看>>
TYVJ.1864.[Poetize I]守卫者的挑战(概率DP)
查看>>
0925 韩顺平java视频
查看>>
iOS-程序启动原理和UIApplication
查看>>
mysql 8.0 zip包安装
查看>>
awk 统计
查看>>
模板设计模式的应用
查看>>