#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;
}
相关推荐
在不同版本Python中安装PyQT5及PyQT5-Tools
在不同版本Python中安装PyQT5及PyQT5-Tools
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;
揭秘Outlook/QQ邮箱伪造:如何利用Unicode编码绕过SPF检测
本文深入剖析了利用Unicode编码进行邮件显示名伪造的攻击手法,揭示了攻击者如何通过插入零宽字符等特殊编码绕过SPF检测,使邮件在Outlook、QQ邮箱等客户端中看似来自可信发件人。文章通过Python代码示例演示了伪造过程,并提供了从用户自查到管理员部署DMARC策略的多层次防御建议。
poj2761(静态区间第k大,treap)
题意:给你一个序列和m个区间[l,r],每次输出每个区间中第k大的值为多少。区间之间有重叠但没有完全包含。 解析:由于区间没有完全包含。所以先将区间按左端点排序,每次查询一个新区间时将其与上一个区间重叠部分保留,其余删去,在加入自己新的部分,最后查询第k大值。这是一道考察treap应用的好题。 #include #include #include #include using namespac
招标文件智能解析系统开发文档
本系统是一个基于OCR与大语言模型的招标文件智能解析平台,专门用于处理和分析招标文件,自动提取关键信息并进行结构化展示。
ESP32C3的I2S接口详解:以驱动PCM5102A为例,避开时序与配置的那些坑
本文深入解析ESP32C3的I2S接口驱动PCM5102A DAC的完整解决方案,涵盖时序对齐、PCB优化和寄存器级配置。通过实际案例分享时钟树分析、信号完整性设计和底层调试技巧,帮助开发者避开常见陷阱,实现高质量音频输出。重点探讨了I2S协议栈、电源滤波优化及DMA传输异常处理等关键技术要点。
POJ 2761 离线线段树
题意:给出每只狗的pretty value,然后多次询问,每次输出区间[i,j](狗站成一排,从第i只到第j只)的第k小的值是多少。区间之间有交叉,但是没有完全包含。
Coding Plan:程序员真实工作的可执行编码决策框架
Coding Plan 是一种面向工程实践的编码决策方法论,它超越传统学习路径,聚焦于代码在真实业务系统中的上下文对齐、影响控制与可演进性保障。其核心在于将模糊的开发直觉转化为可度量、可验证、可协作的日常动作,涵盖目标对齐、上下文锁定、验证闭环、协作契约和演进预留五大锚点。结合2026年AI辅助编码新范式,它强调将大模型作为‘上下文翻译器’而非代码生成器,并通过分钟级工作块、技术债主动发行、可观测性前置等机制,显著提升交付确定性与系统长期健康度。本文详解该框架的底层逻辑与落地实践。
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
深入解析LCD DRM驱动框架中的KMS与GEM机制
本文深入解析了Linux内核中DRM(Direct Rendering Manager)驱动框架的核心机制,重点剖析了KMS(内核模式设置)与GEM(图形执行管理器)的工作原理。KMS作为显示系统的总指挥,负责原子化地控制CRTC、Encoder、Plane等硬件资源,确保画面同步更新,避免撕裂;GEM则作为显存大管家,通过DUMB和PRIME机制高效管理图形缓冲区的分配、共享与同步。文章结合RK3568平台实战,阐述了如何利用这些机制优化显示性能,并提供了调试技巧与常见问题解决方案。
CarSim - 仿真汽车驾驶行为的完整源代码及描述
以上是多年收集的稀有软件CarSim的源代码和描述,借助CarSim提供的功能,用户可以准确地模拟和研究汽车的驾驶行为,为汽车设计、驾驶辅助系统等领域提供有价值的支持。是一款用于模拟汽车驾驶行为的稀有软件,它经过多年的收集和开发,提供了一套完整的源代码和相应的描述,能够准确地模拟真实世界中的汽车运动和操控。CarSim的源代码采用现代化的。
poj 2761 Feed the dogs 平衡树,线段树,树状数组
分析:这题就是求区间第k小数,但是这题和poj2104的区别就是,2104的区间是可以完全包含的,就是说某个点进出区间不止一次,所以平衡树和线段树是超时的,只能用划分树或者归并树,这题是可以用平衡树解的。先把区间从左到右排序,然后依次插入平衡树,线段树,然后利用树的性质在log n 内找到第k小。这题也可以用树状数组解,但是需要二分第k小,我一直觉得二分不是最好的做法,考虑能不能在log n内用树
Qt实现窗口等比例缩放
在Qt中,实现窗口的等比例缩放是一个常见的需求。通过对窗口的尺寸进行调整,使得窗口的内容在缩放过程中保持相同的比例,可以提供更好的用户体验。通过以上的代码,我们实现了一个可以等比例缩放的Qt窗口。在调整窗口大小时,窗口中的标签和按钮将按比例缩放,保持内容的比例不变。首先,我们需要在Qt中创建一个窗口,并设置其内容。在该事件中,我们将根据窗口的新尺寸计算出合适的比例因子,并将其应用到窗口的内容上。现在,我们将添加功能,使得窗口可以等比例缩放。最后,我们将缩放因子应用到窗口中的标签和按钮上,调整它们的尺寸。
poj 2761 线段树(多次查询不覆盖区间的第k小数)
题意:给定n个数,m次查询(a,b,k),表示查询第a个数到第b个数(闭区间[a,b])中的第k小数。其中这m个区间保证没有一个完全覆盖另外一个。 思路:首先考虑没有区间覆盖的意思:对于最小的区间终点,它对应的起点一定是最小的区间起点。首先离散化。然后使用线段树,每个节点(如表示区间为[a,b])维护一个值small表示位于其左儿子的个数。然后对于每个区间(对区间先排序)更新查询即可。时间复杂度
文档:亲测可用解决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
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]区间内的数的个数来
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.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
poj pku 线段树题目20道汇总+简要算法+分类+难度
这两天做了几个线段树的题目 与大家分享 欢迎补充 难度系数 分为从1 到 5 (只对初学者有用 对大牛来讲 这些题的难度系数都是0..) http://acm.pku.edu.cn/JudgeOnline/problem?id=1151 Atlantis 扫描线+离散化+线段树 这是经典的扫描线求矩形面积交 很好过 没什么陷阱 如果头一次接触扫描线 那么难度系数大概算3吧
线段树练习
poj pku 线段树题目20道汇总+简要算法+分类+难度 来源: 黑梦楠的日志 这两天做了几个线段树的题目 与大家分享 欢迎补充 难度系数 分为从1 到 5 (只对初学者有用 对大牛来讲 这些题的难度系数都是0..) http://acm.pku.edu.cn/JudgeOnline/problem?id=1151 Atlantis 扫描线+离散化+线段树
POJ 线段树题目20道汇总+简要算法+分类+难度
难度系数 分为从1 到 5 (只对初学者有用 对大牛来讲 这些题的难度系数都是0..) http://acm.pku.edu.cn/JudgeOnline/problem?id=1151 Atlantis 扫描线+离散化+线段树 这是经典的扫描线求矩形面积交 很好过 没什么陷阱 如果头一次接触扫描线 那么难度系数大概算3吧 如果熟练掌握扫描线 难度系数为1 难度系数 *** ...
pku线段树20题(mark)
难度系数 分为从1 到 5 (只对初学者有用 对大牛来讲 这些题的难度系数都是0..) http://acm.pku.edu.cn/JudgeOnline/problem?id=1151 Atlantis 扫描线+离散化+线段树 这是经典的扫描线求矩形面积交 很好过 没什么陷阱 如果头一次接触扫描线 那么难度系数大概算3吧 如果熟练掌握扫描线 难度系数为1 难度系数 ***
【转】poj pku 线段树题目20道汇总+简要算法+分类+难度
这两天做了几个线段树的题目 与大家分享 欢迎补充 难度系数 分为从1 到 5 (只对初学者有用 对大牛来讲 这些题的难度系数都是0..) http://acm.pku.edu.cn/JudgeOnline/problem?id=1151 Atlantis 扫描线+离散化+线段树 这是经典的扫描线求矩形面积交 很好过 没什么陷阱 如果头一次接触扫描线 那么难度系数大概算3吧 如果熟练掌握扫描...
POJ 2761 树状数组+二分+离线
关键: 1.离线操作: 将询问区间从左到右排序,然后依次插入区间内的值,在处理下一个询问时,删去上个询问插入的但当前询问不需要插入的数。 m次询问总体复杂度为 2nlog(n). 2.本题注意要离散化 3.二分(手写upper_bound)来查询第k小的数 #include #include #include using namespace std; #define maxn
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
poj2761静态区间第k大
例题:poj2761 题目要求:给定一个长度为n的序列,给定m个询问,每次询问求[l,r]区间内的第k大; 对于这道题目来说,很多算法都可以使用,比如说树套树(一个负责划分区间,一个负责维护这段区间内的信息),主席树等; 对这道题我使用的是主席树; 主席树对付区间第k大是很优秀的,代码短,而且常数小; 主席树的主要功能是,建立n颗范围是1-i的权值线段树,对两颗线段树做差,就可以任...
2万+



被折叠的 条评论
为什么被折叠?



