POJ-2761-树状数组+第k小数+离散化

【MATLAB/Simulink】从模型到飞行:基于PX4与Rflysim的无人机MBD实战指南 本文详细介绍了基于MATLAB/Simulink与PX4、Rflysim的无人机模型开发与飞行控制实战指南。通过MBD(基于模型设计)方法,从建模、仿真到代码生成与硬件部署,实现无人机开发的高效闭环。文章涵盖开发环境搭建、动力学建模、控制算法实现及测试验证全流程,为无人机开发者提供实用技巧与优化建议。 阅读详情
#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;

const int inf = 0x3f3f3f3f;
const int maxn = 100009;
const double esp = 1e-6;

int n, m, num;
int bef[maxn];
int aft[maxn];
int ans[50009];
int C[maxn];

struct Q
{
    int i, j, k, id;
}q[50009];

int cmp(Q a, Q b) //查询 先安起始位置从小到大排序;再按结束为止从小到大排序
{
    if(a.i==b.i) return a.j<b.j;
    else return a.i<b.i;
}

inline int lowbit(int x)
{
    return x&(-x);
}

void add(int i, int val)
{
    for(; i<=num; i+=lowbit(i))
        C[i]+=val;
}

int query(int i)
{
    int a = 0;
    for(; i>0; i-=lowbit(i))
        a += C[i];
    return a;
}

int find(int val) //二分查找离散化后的编号
{
    int l = 1, r = num, mid;
    while(1)
    {
        mid = (l+r)/2;
        if( aft[mid]==val ) return mid;
        else if( aft[mid]>val ) r = mid-1;
        else l = mid+1;
    }
}

int answer(int val) 
{
    int l=1, r=num, mid;
    while(l<r)
    {
        mid = (l+r)/2;
        int t = query(mid);
        if( t < val) l = mid+1;
        else r = mid;
    }
    return aft[l];
}

void solve()
{
    memset(C, 0, sizeof(C));
    int l = q[1].i, r = q[1].j;
    for(int i = l; i<=r; i++) 
    {
        add( find( bef[i] ), 1 );
    }
    ans[ q[1].id ] = answer( q[1].k );
    for(int i=2; i<=m; i++)
    {
        for(int j=q[i-1].i; j<q[i].i; j++)
            add( find(bef[j]), -1 );
        if( q[i-1].j<q[i].j )
        {
            for(int j=q[i-1].j+1; j<=q[i].j; j++)
                add( find(bef[j]), 1 );
        }
        else
        {
            for(int j=q[i-1].j; j>q[i].j; j--)
                add( find(bef[j]), -1 );
        }
        ans[ q[i].id ] = answer( q[i].k );
    }
}

int main()
{
    scanf("%d%d", &n, &m);
    for(int i=1; i<=n; i++)
    {
        scanf("%d", &bef[i]);
        aft[i] = bef[i];
    }
    sort(aft+1, aft+n+1);
    num = 0;
    for(int i=1; i<=n; i++)
    if(aft[i]!=aft[i-1])  //离散化,去重
        aft[++num] = aft[i];

    for(int i=1; i<=m; i++)
    {
        scanf("%d%d%d", &q[i].i, &q[i].j, &q[i].k);
        q[i].id = i;
    }
    sort(q+1, q+m+1, cmp);
    solve();
    for(int i=1; i<=m; i++)
        printf("%d\n", ans[i]);
	return 0;
}


基于simulink的BMS系统中电池单体故障隔离与恢复建模 本文介绍了使用Simulink构建BMS电池单体故障诊断与容错控制模型的方法。主要内容包括:1)搭建12串锂电池组模型;2)实现单体故障注入(过压、断线等);3)设计故障诊断与隔离模块(采用Stateflow状态机);4)开发恢复判断逻辑(需满足电压、温度等条件);5)系统监控与仿真设置。文章还提供了工程实践建议,如防环流设计、通信冗余等,并指出进阶方向(多故障处理、AI预警等)。该模型适用于新能源汽车、储能系统的BMS设计,可提高系统可靠性和安全性。 阅读详情

相关推荐

在不同版本Python中安装PyQT5及PyQT5-Tools

在不同版本Python中安装PyQT5及PyQT5-Tools

zoomgu680的博客 2万+

poj 2761 splay tree

这道题 可以用很多方法做像划分树之类滴~~~ 用splay虽然比划分树慢了一点,不过也只是慢了一点呀,想想有通用的解法,何必用不太常用的划分树喃~~ #include #include #include #include #define fr(i,s,n) for(int i=s;i<n;++i) #define _fr(i,n,s) for(int i=n-1;i>=s;

work_freedom的专栏 553

揭秘Outlook/QQ邮箱伪造:如何利用Unicode编码绕过SPF检测

本文深入剖析了利用Unicode编码进行邮件显示名伪造的攻击手法,揭示了攻击者如何通过插入零宽字符等特殊编码绕过SPF检测,使邮件在Outlook、QQ邮箱等客户端中看似来自可信发件人。文章通过Python代码示例演示了伪造过程,并提供了从用户自查到管理员部署DMARC策略的多层次防御建议。

weixin_29063035的博客 332

poj2761(静态区间第k大,treap)

题意:给你一个序列和m个区间[l,r],每次输出每个区间中第k大的值为多少。区间之间有重叠但没有完全包含。 解析:由于区间没有完全包含。所以先将区间按左端点排序,每次查询一个新区间时将其与上一个区间重叠部分保留,其余删去,在加入自己新的部分,最后查询第k大值。这是一道考察treap应用的好题。 #include #include #include #include using namespac

xffyjq的博客 588

招标文件智能解析系统开发文档

本系统是一个基于OCR与大语言模型的招标文件智能解析平台,专门用于处理和分析招标文件,自动提取关键信息并进行结构化展示。

警世龙的技术博客 1925

ESP32C3的I2S接口详解:以驱动PCM5102A为例,避开时序与配置的那些坑

本文深入解析ESP32C3的I2S接口驱动PCM5102A DAC的完整解决方案,涵盖时序对齐、PCB优化和寄存器级配置。通过实际案例分享时钟树分析、信号完整性设计和底层调试技巧,帮助开发者避开常见陷阱,实现高质量音频输出。重点探讨了I2S协议栈、电源滤波优化及DMA传输异常处理等关键技术要点。

weixin_30254435的博客 298

POJ 2761 离线线段树

题意:给出每只狗的pretty value,然后多次询问,每次输出区间[i,j](狗站成一排,从第i只到第j只)的第k小的值是多少。区间之间有交叉,但是没有完全包含。

835

Coding Plan:程序员真实工作的可执行编码决策框架

Coding Plan 是一种面向工程实践的编码决策方法论,它超越传统学习路径,聚焦于代码在真实业务系统中的上下文对齐、影响控制与可演进性保障。其核心在于将模糊的开发直觉转化为可度量、可验证、可协作的日常动作,涵盖目标对齐、上下文锁定、验证闭环、协作契约和演进预留五大锚点。结合2026年AI辅助编码新范式,它强调将大模型作为‘上下文翻译器’而非代码生成器,并通过分钟级工作块、技术债主动发行、可观测性前置等机制,显著提升交付确定性与系统长期健康度。本文详解该框架的底层逻辑与落地实践。

weixin_33326218的博客 437

POJ 2761 (SBT模板)

#include #include #include #include using namespace std; #define maxn 100005 #define maxm 50005 int ls[maxn],rs[maxn],s[maxn],value[maxn]; int node,root; void init() { node=root=s[0]=0; } void

BehappyXiang的专栏 1046

深入解析LCD DRM驱动框架中的KMS与GEM机制

本文深入解析了Linux内核中DRM(Direct Rendering Manager)驱动框架的核心机制,重点剖析了KMS(内核模式设置)与GEM(图形执行管理器)的工作原理。KMS作为显示系统的总指挥,负责原子化地控制CRTC、Encoder、Plane等硬件资源,确保画面同步更新,避免撕裂;GEM则作为显存大管家,通过DUMB和PRIME机制高效管理图形缓冲区的分配、共享与同步。文章结合RK3568平台实战,阐述了如何利用这些机制优化显示性能,并提供了调试技巧与常见问题解决方案。

weixin_29188997的博客 387

CarSim - 仿真汽车驾驶行为的完整源代码及描述

以上是多年收集的稀有软件CarSim的源代码和描述,借助CarSim提供的功能,用户可以准确地模拟和研究汽车的驾驶行为,为汽车设计、驾驶辅助系统等领域提供有价值的支持。是一款用于模拟汽车驾驶行为的稀有软件,它经过多年的收集和开发,提供了一套完整的源代码和相应的描述,能够准确地模拟真实世界中的汽车运动和操控。CarSim的源代码采用现代化的。

weixin_50547796的博客 293

poj 2761 Feed the dogs 平衡树,线段树,树状数组

分析:这题就是求区间第k小数,但是这题和poj2104的区别就是,2104的区间是可以完全包含的,就是说某个点进出区间不止一次,所以平衡树和线段树是超时的,只能用划分树或者归并树,这题是可以用平衡树解的。先把区间从左到右排序,然后依次插入平衡树,线段树,然后利用树的性质在log n 内找到第k小。这题也可以用树状数组解,但是需要二分第k小,我一直觉得二分不是最好的做法,考虑能不能在log n内用树

行走世间,皆为妖怪 1046

Qt实现窗口等比例缩放

在Qt中,实现窗口的等比例缩放是一个常见的需求。通过对窗口的尺寸进行调整,使得窗口的内容在缩放过程中保持相同的比例,可以提供更好的用户体验。通过以上的代码,我们实现了一个可以等比例缩放的Qt窗口。在调整窗口大小时,窗口中的标签和按钮将按比例缩放,保持内容的比例不变。首先,我们需要在Qt中创建一个窗口,并设置其内容。在该事件中,我们将根据窗口的新尺寸计算出合适的比例因子,并将其应用到窗口的内容上。现在,我们将添加功能,使得窗口可以等比例缩放。最后,我们将缩放因子应用到窗口中的标签和按钮上,调整它们的尺寸。

2301_79330511的博客 3958

poj 2761 线段树(多次查询不覆盖区间的第k小数)

题意:给定n个数,m次查询(a,b,k),表示查询第a个数到第b个数(闭区间[a,b])中的第k小数。其中这m个区间保证没有一个完全覆盖另外一个。 思路:首先考虑没有区间覆盖的意思:对于最小的区间终点,它对应的起点一定是最小的区间起点。首先离散化。然后使用线段树,每个节点(如表示区间为[a,b])维护一个值small表示位于其左儿子的个数。然后对于每个区间(对区间先排序)更新查询即可。时间复杂度

dearmango 755

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

POJ 2761 树状数组离线+离散化 附:线段树解法

#include #include #include #include #include #include #include #include #include #include using namespace std; const int N=100009; c

Join Hands 1220

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

静态主席树

首先来考虑一个问题 给你N个数字 然后是M次询问 每次查询 l-r第k大的数是多少? n、m的范围都是 10^5最暴力的方法也就是把这些数拿出来,然后Sort输出结果 这样的复杂度是O(m×n logn) 现在想一下如何用线段树来解决 l-r 中k值的问题 建一棵线段树 每个节点 代表l-r 区间 数字的个数 要求第k小,也就是与个数相关,那么我们可以 以[l,r]区间内的数的个数来

HT008的Blog 280

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

线段树,树状数组

难度系数 分为从1 到 5 (只对初学者有用 对大牛来讲 这些题的难度系数都是0..) http://acm.pku.edu.cn/JudgeOnline/problem?id=1151 Atlantis 扫描线+离散化+线段树 这是经典的扫描线求矩形面积交 很好过 没什么陷阱 如果头一次接触扫描线 那么难度系数大概算3吧 如果熟练掌握扫描线 难度系数为1 难度系数 *** http

chen_1993_6_9的专栏 385

poj pku 线段树题目20道汇总+简要算法+分类+难度

这两天做了几个线段树的题目 与大家分享 欢迎补充 难度系数 分为从1 到 5 (只对初学者有用 对大牛来讲 这些题的难度系数都是0..) http://acm.pku.edu.cn/JudgeOnline/problem?id=1151 Atlantis 扫描线+离散化+线段树 这是经典的扫描线求矩形面积交 很好过 没什么陷阱 如果头一次接触扫描线 那么难度系数大概算3吧

她山之石,决不自弃 952

线段树练习

poj pku 线段树题目20道汇总+简要算法+分类+难度 来源: 黑梦楠的日志 这两天做了几个线段树的题目 与大家分享 欢迎补充 难度系数 分为从1 到 5 (只对初学者有用 对大牛来讲 这些题的难度系数都是0..) http://acm.pku.edu.cn/JudgeOnline/problem?id=1151 Atlantis 扫描线+离散化+线段树

u013570474的专栏 547

POJ 线段树题目20道汇总+简要算法+分类+难度

难度系数 分为从1 到 5 (只对初学者有用 对大牛来讲 这些题的难度系数都是0..) http://acm.pku.edu.cn/JudgeOnline/problem?id=1151 Atlantis 扫描线+离散化+线段树 这是经典的扫描线求矩形面积交 很好过 没什么陷阱 如果头一次接触扫描线 那么难度系数大概算3吧 如果熟练掌握扫描线 难度系数为1 难度系数 *** ...

weixin_30597269的博客 106

pku线段树20题(mark)

难度系数 分为从1 到 5 (只对初学者有用 对大牛来讲 这些题的难度系数都是0..) http://acm.pku.edu.cn/JudgeOnline/problem?id=1151 Atlantis 扫描线+离散化+线段树 这是经典的扫描线求矩形面积交 很好过 没什么陷阱 如果头一次接触扫描线 那么难度系数大概算3吧 如果熟练掌握扫描线 难度系数为1 难度系数 ***

ACMan 400

【转】poj pku 线段树题目20道汇总+简要算法+分类+难度

这两天做了几个线段树的题目 与大家分享 欢迎补充 难度系数 分为从1 到 5 (只对初学者有用 对大牛来讲 这些题的难度系数都是0..) http://acm.pku.edu.cn/JudgeOnline/problem?id=1151 Atlantis 扫描线+离散化+线段树 这是经典的扫描线求矩形面积交 很好过 没什么陷阱 如果头一次接触扫描线 那么难度系数大概算3吧 如果熟练掌握扫描...

weixin_34001430的博客 240

POJ 2761 树状数组+二分+离线

关键: 1.离线操作: 将询问区间从左到右排序,然后依次插入区间内的值,在处理下一个询问时,删去上个询问插入的但当前询问不需要插入的数。 m次询问总体复杂度为 2nlog(n).  2.本题注意要离散化 3.二分(手写upper_bound)来查询第k小的数 #include #include #include using namespace std; #define maxn

Nicolas 1205

poj2761(Treap)

Feed the dogs Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 17589   Accepted: 5524 Description Wind loves pretty dogs very much, and she has n pet dogs. So

Water_Wood_的博客 504

poj2761静态区间第k大

例题:poj2761 题目要求:给定一个长度为n的序列,给定m个询问,每次询问求[l,r]区间内的第k大; 对于这道题目来说,很多算法都可以使用,比如说树套树(一个负责划分区间,一个负责维护这段区间内的信息),主席树等; 对这道题我使用的是主席树; 主席树对付区间第k大是很优秀的,代码短,而且常数小; 主席树的主要功能是,建立n颗范围是1-i的权值线段树,对两颗线段树做差,就可以任...

weixin_30849591的博客 155
上一篇: 后天整理下这几天做的题。
下一篇: ZOJ-3612-树状数组+第k小数+离散化
walk_up
博客等级 码龄15年 2粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值