POJ - 2104 K-th Number

POJ 2104 K-th Number ——划分树 POJ 2104 题解 ——划分树 本文是一个系列的第一篇文章。本系列基于上交老师出品的《程序设计解题策略》书籍。该书介绍了49个ACM/ICPC算法设计策略。本系列打算用一个更简单的方式介绍书中的解题策略。当然,针对每个策略,也会给出相应的测试题目及其代码。 文章目录POJ 2104 题解 ——划分树划分树算法问题与复杂度建树查找完整AC代码 划分树算法 问题与复杂度 划分树主要应用于求解整数... 阅读详情

题目:给你一个n个数的序列,m个询问,每次询问为i,j,k,问区间[i,j]中的数按升序排序后,第k个数是什么

思路:CDQ分治,整体二分答案

代码:

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<algorithm>
#include<ctime>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<list>
#include<numeric>
using namespace std;
#define LL long long
#define ULL unsigned long long
#define INF 0x3f3f3f3f
#define mm(a,b) memset(a,b,sizeof(a))
#define PP puts("*********************");
template<class T> T f_abs(T a){ return a > 0 ? a : -a; }
template<class T> T gcd(T a, T b){ return b ? gcd(b, a%b) : a; }
template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
// 0x3f3f3f3f3f3f3f3f
//0x3f3f3f3f

const int maxn=110050;
struct Query{
    int x,y,k,pos,type;
    Query(int _x,int _y,int _k,int _pos,int _type):x(_x),y(_y),k(_k),pos(_pos),type(_type){}
    Query(){}
}q[maxn],q1[maxn],q2[maxn];
struct BIT{
    int n,b[maxn];
    void init(int _n){
        n=_n;
        mm(b,0);
    }
    void add(int i,int val){
        for(;i<=n;i+=i&(-i))
            b[i]+=val;
    }
    int sum(int i){
        int ret=0;
        for(;i>0;i-=i&(-i))
            ret+=b[i];
        return ret;
    }
}bit;
int arr[maxn],ans[maxn];
void solve(int L,int R,int l,int r){
    if(L>R) return;
    if(l==r){
        for(int i=L;i<=R;i++)
            if(q[i].type==2)
                ans[q[i].pos]=l;
        return;
    }
    int mid=(l+r)>>1;
    int sz1=0,sz2=0;
    for(int i=L;i<=R;i++){
        if(q[i].type==1){
            if(q[i].x<=mid){
                bit.add(q[i].pos,1);
                q1[sz1++]=q[i];
            }
            else
                q2[sz2++]=q[i];
        }
        else{
            int res=bit.sum(q[i].y)-bit.sum(q[i].x-1);
            if(res>=q[i].k) q1[sz1++]=q[i];
            else{
                q[i].k-=res;
                q2[sz2++]=q[i];
            }
        }
    }
    for(int i=0;i<sz1;i++)//清空
        if(q1[i].type==1)
            bit.add(q1[i].pos,-1);

    memcpy(q+L,q1,sz1*sizeof(Query));
    memcpy(q+L+sz1,q2,sz2*sizeof(Query));

    solve(L,L+sz1-1,l,mid);
    solve(L+sz1,R,mid+1,r);
}
int main(){

//    freopen("D:\\input.txt","r",stdin);
//    freopen("D:\\output.txt","w",stdout);
    int n,m,x,y,k;
    while(~scanf("%d%d",&n,&m)){
        bit.init(n);
        int idx=0;
        for(int i=1;i<=n;i++){
            scanf("%d",&arr[i]);
            q[++idx]=Query(arr[i],1,1,i,1);
        }
        for(int i=1;i<=m;i++){
            scanf("%d%d%d",&x,&y,&k);
            q[++idx]=Query(x,y,k,i,2);
        }
        solve(1,idx,-INF,INF);
        for(int i=1;i<=m;i++)
            printf("%d\n",ans[i]);
    }
    return 0;
}


2026年ERP选型实战:按规模分档,避开成本与实施陷阱 企业资源计划(ERP)是现代企业数字化转型的核心系统,它将财务、供应链、制造、人力等业务整合到统一平台。随着云计算和人工智能技术的发展,ERP已从传统本地部署的记录工具演变为SaaS订阅制、具备AI辅助决策能力的智能运营平台。不同规模企业在选型时的关注点差异巨大:小微企业追求轻量化和快速出报表,中型企业需要在流程标准化与业务灵活性间取得平衡,大型集团则注重多法人管控和数据治理。此外,制造、电商、工程等行业对ERP的模块要求也各有侧重,成本核算数据跑不通更是普遍痛点。如何结合企业规模与行业特征,制定合理的选型 阅读详情

相关推荐

Profinet从站开发初体验:用p-net开源库和树莓派快速搭建一个IO设备模拟器

本文详细介绍了如何使用p-net开源库和树莓派快速搭建Profinet从站IO设备模拟器。从开发环境准备、p-net源码编译到设备模拟器功能实现,提供了全流程实战指南,帮助开发者快速掌握工业通信协议开发技巧,适用于工业自动化领域的设备互联测试与验证。

weixin_30384217的博客 383

POJ 2104 K-th Number【划分树】

http://poj.org/problem?id=2104POJ 2104 K-th Number大意:有n个数字排成一列,有m个询问,格式为:left right k即问在区间[left,right]第k大的数据为多少? 分析:划分树具体的介绍开心->OK介绍得很清楚,这里把他PPT里的部分贴上来,邪恶一把,嘿嘿。。建图:建树的过程比较简单,对于区间[l,r],首先通过对原数...

a48634331的博客 195

地图坐标系大全:常用地图坐标系详解与转换指南

地图坐标系是用于描述地图上位置的数学模型。它可以用来表示地球表面上的任意一个点,使得这个点的位置可以在地图上精确定位。不同的地图坐标系采用不同的基准面和投影方式,因此会有不同的坐标系参数,不同的坐标系之间也需要进行坐标转换。在地图制图、导航、GIS等领域中,地图坐标系是一个非常重要的概念。

weixin_39888010的博客 1万+

【主席树_模板题】POJ 2104 K-th Number

主席树_模板题【查询区间第k小】

L_X_ 292

quartus 13.1常见报错解决方法

在使用quartus中会遇到很多由于安装或设置不规范造成的错误。我就目前我遇到的一些错误以及我的解决方法分享给大家,这个文章将会持续更新,如果读者有遇到软件中错误无法解决的问题,也欢迎在评论区留言。 一、编译出现lience错误 在对设计的电路编译时,系统在程序运行3秒内即结束并报错,大概意思为现有的证书不支持编译。这个常见问题源自破解不成功,这里读者很有可能犯的错误是在使用破解器的时候没有区分x86(即32-bit)和x64软件破解器对应的文件夹。 如图所示有两种破解器,分别对应32位和64位的软件,大部

肥宅的博客 3万+

树莓派4B保姆级教程:从零配置Python虚拟环境到PySide2开发全流程(含避坑指南)

本文提供树莓派4B上配置Python虚拟环境及PySide2 GUI开发的完整教程。针对armv7l架构的特殊性,详细讲解了从系统准备、虚拟环境创建到PySide2安装的避坑指南,并重点解决了跨平台UI文件处理等常见难题,帮助开发者构建稳定高效的开发环境。

9q8w7e6r5的博客 822

POJ2104 K-th Number —— 划分树(模板题)

题目链接:http://poj.org/problem?id=2104. K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 59744   Accepted: 20847 Case Time Limit: 2000MS

A man can be destroyed, but not defeated. 459

保姆级教程:在Ubuntu 20.04上从源码编译Apollo自动驾驶平台(含GPU环境配置)

本文提供了一份详细的Ubuntu 20.04上从源码编译Apollo自动驾驶平台的保姆级教程,包括GPU环境配置、Docker部署和编译构建等关键步骤。通过实战经验和避坑指南,帮助开发者高效完成Apollo平台的编译和验证,适用于自动驾驶技术研究和应用开发。

weixin_30876945的博客 405

POJ2104 K-th Number (划分树模板)

POJ2104 K-th Number (题目链接) 求区间第k大 /************************************************************************* File Name: A.cpp ID: obsoles1 PROG: LANG: C++ Mail: 38

obsolescence的博客 349

codex出现Reconnecting和stream disconnected before completion:stream closed before response.complete解决方案

本文主要介绍了在使用codex过程中出现Reconnecting和stream disconnected before completion: stream closed before response.completed的解决方案,希望能对使用codex的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 9万+

Android Telephony主要模块及功能

Telephony的代码主要由五个模块组成 1.Telephony Frameworks 代码区域: frameworks/opt/telephony/ 其中主要的文件在如下目录 /frameworks/opt/telephony/src/java/com/android/internal/telephony/ 其中比较常见的有以下几类文件 1.BaseCommands、RIL构成R

泊客 7720

POJ-2104-K-th Number

POJ-2104-K-th Number http://poj.org/problem?id=2104 划分树的基本思想就是对于某个区间,把它划分成两个子区间,左边区间的数小于右边区间的数。查找的时候通过记录进入左子树的数的个数,确定下一个查找区间,最后范围缩小到1,就找到了。 建树的过程比较简单,对于区间[l,r],首先通过对原数组的排序找到这个区间的中位数a[mid],小于a[mid]的

comeace的程序人生 847

强化学习(Reinforcement Learning)与动态系统控制方法

一个具体的 RBC 的例子是自动驾驶汽车中的交通规则。在训练过程中,代理通过与环境交互获取奖励信号,并学习如何在某个状态下采取最佳的行动,以最大化长期的累积奖励。在化工过程中,通过对生产过程中的温度、压力、流量等参数的控制来实现产品的质量和产量的提高。需要注意的是,以上代码只是一个简单的示例,实际的 MPC 系统可能会更加复杂,并包含更多的模型预测和控制算法来实现更复杂的控制任务。需要注意的是,以上代码只是一个简单的示例,实际的自动驾驶汽车系统可能会更加复杂,并包含更多的规则和条件来确保安全行驶。

AI天才研究院 4062

poj 2104 K-th Number

类型:划分树【学习资料】 题目:http://poj.org/problem?id=2104 来源:Northeastern Europe 2004, Northern Subregion 思路    代码源自:http://blog.sina.com.cn/s/blog_5f5353cc0100ki2e.html  http://blog.youkuaiyun.com/zxy_sno

gold_bridge 371

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

POJ 2104 K-th Number

POJ 2104 K-th Number 题目链接 Description You are working for Macrohard company in data structures department. After failing your previous task about key insertion you were asked to write a new data structure that would be able to return quickly k-th order sta

旺崽的博客 2674

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

poj 2104 K-th Number(划分线段树)

//poj 2104 K-th Number(划分线段树) #include #include #include using namespace std; const int MAXN=100100; int st[MAXN];//对所存序列进行排序(取基准元素所用) struct node { int l,r; }tree[MAXN*4];//建立线段树所用空间 int arrsub[3

u014068781的专栏 422

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【poj2104】K-th Number 分块

DescriptionYou are working for Macrohard company in data structures department. After failing your previous task about key insertion you were asked to write a new data structure that would be able to r

DQS的树洞 1321

POJ2104 K-th Number —— 区间第k小 整体二分

题目链接:https://vjudge.net/problem/POJ-2104 K-th Number Time Limit:20000MS Memory Limit:65536K Total Submissions:64110 Accepted:22556 Case Time Limit:2000MS ...

alince20008的博客 111

POJ2104K-th Number

K-th Number Time Limit: 20000MS Memory Limit: 65536K Case Time Limit:2000MS Description You are working for Macrohard company in data structures department. After failing your previous t

Mrazer 494

Poj 2104 K-th Number

K-th Number Time Limit:20000MS   Memory Limit:65536K Total Submissions:28294   Accepted:8434 Description You are working for Macrohard company in data s

Magic__ 1364

[POJ 2104] K-th Number

[题目链接] http://poj.org/problem?id=2104 [算法] 考虑离线 ,将询问按右端点排序 对于每个询问(l , r , k) , 若我们知道区间[l , r]中 <= x的数有多少个 , 就可以通过二分解决 进一步 , 我们可以将区间[l , r]中 <= x 的数的个数...

103

poj 2104 K-th Number[整体二分]

整体二分

我要吃熊猫 615
上一篇: HDU - 2829 Lawrence
下一篇: bzoj3295 动态逆序对
我不会额
博客等级 码龄11年 2粉丝 173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值