//求第K的的值

 1 #include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long LL;
const int maxn = 1e5 + ;
int n, m, cnt;
struct node {
int L, R, sum;
} tree[maxn * ];
struct value {
int x, id;
} val[maxn];
int cmp(value v1, value v2) {
return v1.x < v2.x;
}
int root[maxn], RANK[maxn];
void init() {
cnt = ;
root[] = ;
tree[].L = tree[].R = tree[].sum = ;
}
void updata(int num, int &rt, int l, int r) {
tree[cnt++] = tree[rt];
rt = cnt - ;
tree[rt].sum++;
if (l == r) return ;
int mid = (l + r) >> ;
if (num <= mid) updata(num, tree[rt].L, l, mid);
else updata(num, tree[rt].R, mid + , r);
}
int query(int i, int j, int k, int l, int r) {
int d = tree[tree[j].L].sum - tree[tree[i].L].sum;
if (l == r) return l;
int mid = (l + r) >> ;
if (k <= d) return query(tree[i].L, tree[j].L, k, l, mid);
else return query(tree[i].R, tree[j].R, k - d, mid + , r) ;
}
int main() {
scanf("%d%d", &n, &m);
for (int i = ; i <= n ; i++) {
scanf("%d", &val[i].x);
val[i].id = i;
}
sort(val + , val + n + , cmp);
for (int i = ; i <= n ; i++)
RANK[val[i].id] = i;
init();
for (int i = ; i <= n ; i++) {
root[i] = root[i - ];
updata(RANK[i], root[i], , n);
}
int left, right, k;
for (int i = ; i <= m ; i++) {
scanf("%d%d%d", &left, &right, &k);
printf("%d\n", val[query(root[left - ], root[right], k, , n)].x);
}
return ;
}

poj 2104 (主席树写法)的更多相关文章

  1. K-th Number Poj - 2104 主席树

    K-th Number Poj - 2104 主席树 题意 给你n数字,然后有m次询问,询问一段区间内的第k小的数. 解题思路 这个题是限时训练做的题,我不会,看到这个题我开始是拒绝的,虽然题意清晰简 ...

  2. [poj 2104]主席树+静态区间第k大

    题目链接:http://poj.org/problem?id=2104 主席树入门题目,主席树其实就是可持久化权值线段树,rt[i]维护了前i个数中第i大(小)的数出现次数的信息,通过查询两棵树的差即 ...

  3. poj 2104 主席树(区间第k大)

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 44940   Accepted: 14946 Ca ...

  4. POJ 2104 - 主席树 / 询问莫队+权值分块

    传送门 题目大意应该都清楚. 今天看到一篇博客用分块+莫对做了这道题,直接惊呆了. 首先常规地离散化后将询问分块,对于某一询问,将莫队指针移动到指定区间,移动的同时处理权值分块的数字出现次数(单独.整 ...

  5. POJ 2104 主席树模板题

    #include <iostream> #include <cstdio> #include <algorithm> int const maxn = 200010 ...

  6. K-th Number POJ - 2104 划分树

    K-th Number You are working for Macrohard company in data structures department. After failing your ...

  7. poj 2761 主席树的应用(查询区间第k小值)

    Feed the dogs Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 22084   Accepted: 7033 De ...

  8. poj 2104 划分树

    思路:裸的划分树 #include<iostream> #include<algorithm> #include<cstring> #include<cstd ...

  9. hdu 4417,poj 2104 划分树(模版)归并树(模版)

    这次是彻底把划分树搞明确了,与此同一时候发现了模版的重要性.敲代码一个字符都不能错啊~~~ 划分树具体解释:点击打开链接 题意:求一组数列中随意区间不大于h的个数. 这个题的做法是用二分查询  求给定 ...

随机推荐

  1. BZOJ:2038: [2009国家集训队]小Z的袜子(hose)(莫队算法模板)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2038 解题心得: 第一次接触莫队算法,很神奇,很巧妙.莫队算法主要就是用来解决多次询问时 ...

  2. P2153 [SDOI2009]晨跑(最小费用最大流)

    题目描述 Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街 ...

  3. python2.7练习小例子(六)

        6):题目:斐波那契数列.     程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.……. ...

  4. 2002: [Hnoi2010]Bounce 弹飞绵羊

    2002: [Hnoi2010]Bounce 弹飞绵羊 https://www.lydsy.com/JudgeOnline/problem.php?id=2002 分析: 绵羊在弹飞的路径中相当于一棵 ...

  5. 修改npm全局安装模式的路径

    由于npm全局模块的存放路径及cache的路径默认是放在C盘下,这样肯定会增加C盘的负担,那么如果需要修改其存放路径应该怎么做呢? 第一步:在nodejs安装目录(也可以指定其它目录)下创建”node ...

  6. 第一篇 Postman的初级使用之设置环境快速切换生成环境与测试环境

    POSTMAN是有谷歌的开源工具,在开发调试.测试执行过程中使用频率非常广泛,本文将记录一些postman在测试中常见的一些配置和使用方法 一.基本的页面区域 略,很简单,大家都会看,再有,学习下面的 ...

  7. flask中static_folder与static_url_path的区别与联系

    # -*- coding:utf-8 -*- from flask import Flask, url_for app1 = Flask(__name__, static_folder='mystat ...

  8. Gym101981I Magic Potion(最大流)

    Problem I. Magic Potion There are n heroes and m monsters living in an island. The monsters became v ...

  9. picker组件,mode=date,苹果机年份从1开始

    由于在IOS上复制图片不方便, 所以用了张别的网站的图 这是在没有设置value和start的情况下出现的,安卓机上显示是好的.尝试完网上相关说法, 发现都不中! 通过各种挣扎啊!~ 心里苦啊~ 复制 ...

  10. 【转】C++操作符的优先级 及其记忆方法

    优先级 操作符 描述 例子 结合性 1 ()[]->.::++-- 调节优先级的括号操作符数组下标访问操作符通过指向对象的指针访问成员的操作符通过对象本身访问成员的操作符作用域操作符后置自增操作 ...