2024江苏省赛E. Divide

embedded/2024/10/22 10:11:21/

补题链接

题目大意:
每次操作会把区间内最大值除以2,q次询问,问[l,r]操作k次后的结果是什么

分析:
一道主席树的题目,可以先最整个区间一直进行除以2的操作,问区间[l,r]操作后结果,其实就可以转化为求区间第k+1大的结果,反转一下就是求区间第 s u m − k − 1 sum-k-1 sumk1小值,这样就是比较裸的主席树了,需要注意的是每次插入操作的时候,需要把数从 a [ i ] a[i] a[i]加入然后除以2,直到为0停止,至于版本的话就是索引 1 1 1 n n n

#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
using i128 = __int128;constexpr int maxn = 1e5+10;
struct ty{int l,r,sum;
}hjt[maxn*280];
int cnt,root[maxn];
int n,q,a[maxn],c[maxn];inline void insert(int l,int r,int pre,int &now,int p){hjt[++cnt] = hjt[pre];now = cnt;hjt[now].sum++;if(l==r) return;int mid = (l+r)>>1;if(p<=mid) insert(l,mid,hjt[pre].l,hjt[now].l,p);else insert(mid+1,r,hjt[pre].r,hjt[now].r,p);
}inline int query(int l,int r,int L,int R,int k){if(l==r) return l;int mid = (l+r)>>1;int tmp = hjt[hjt[R].l].sum-hjt[hjt[L].l].sum;//会在这里减掉1-[l-1]版本的影响if(k<=tmp) return query(l,mid,hjt[L].l,hjt[R].l,k);else return query(mid+1,r,hjt[L].r,hjt[R].r,k-tmp);
}signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n>>q;for(int i = 1;i<=n;++i){cin>>a[i];c[i]=c[i-1];insert(0,1e5,root[i-1],root[i],a[i]);++c[i];a[i]>>=1;while(a[i]){insert(0,1e5,root[i],root[i],a[i]);a[i]>>=1;c[i]++;}}while(q--){int l,r,k;cin>>l>>r>>k;if(k>=c[r]-c[l-1]) cout<<"0\n";else cout<<query(0,1e5,root[l-1],root[r],c[r]-c[l-1]-k)<<"\n";}return 0;
}

http://www.ppmy.cn/embedded/129531.html

相关文章

go中阶乘实现时递归及迭代方式的比较

package mainimport ("fmt""time""math/big" )// 使用递归和 big.Int 计算阶乘 func FactorialRecursive(n *big.Int) *big.Int {if n.Cmp(big.NewInt(0)) 0 {return big.NewInt(1)}return new(big.Int).Mul(n, FactorialRecursive(new(big.Int…

docker部署AI证件照工具 —— 筑梦之路

GitHub&#xff1a;https://github.com/Zeyi-Lin/HivisionIDPhotos 简介 一款开源的图片处理工具&#xff0c;可以利用AI模型对照片进行轻量级智能抠图、调整尺寸生成不同的标准证件照、替换背景、美颜、智能换正装等操作。 安装部署 docker run -d -p 7860:7860 linzeyi/hiv…

jeston编译配置cuda加速版opencv

1.源码下载连接 opencv&#xff1a;Releases - OpenCV opencv-contrib&#xff1a; https://github.com/opencv/opencv_contrib 建议不要下最新版本 一般我会下4.5.4 // 4.5.6 // 4.6.0 opencv和opencv-contrib版本要对齐 将下好的opencv和opencv-contrib解压 将opencv-c…

Git的原理和使用(五)

场景&#xff1a; 目标&#xff1a;远程master分支下新增function1和function2文件&#xff1b; 实现&#xff1a;由开发者1新增function1&#xff0c;由开发者2新增function2&#xff1b; 条件&#xff1a;在不同分支下协作完成&#xff1b;各自让某一个功能私有某一个分支&am…

MySQL数据库操作——(4)

目录 8 视图 8.1 常见的数据库对象 8.2 视图概述 8.2.1 为什么使用视图&#xff1f; 8.2.2 视图的理解 8.3 创建视图 8.3.1 创建单表视图 8.3.2 创建多表联合视图 8.3.3 基于视图创建视图 8.4 查看视图 8.5 更新视图的数据 8.5.1 一般情况 8.6 修改、删除视图 8.…

Vue 项目中 Webpack 常见问题详解

前言 在Vue.js项目中&#xff0c;Webpack 作为打包工具&#xff0c;处理各种静态资源和模块化的代码打包需求。尽管 Webpack 在 Vue CLI 项目中已经配置好了一些默认行为&#xff0c;但开发者在实际项目中仍然会遇到许多与资源管理、public 和 assets 目录、require 语法等相关…

使用verilog设计实现的数字滤波器(低通、高通、带通)及其仿真

以下是一个简单的使用Verilog设计数字滤波器(以有限脉冲响应(FIR)滤波器为例,实现低通、高通、带通滤波器)的基本步骤和代码框架: 一、FIR滤波器原理 FIR滤波器的输出 y [ n ] y[n] y[n] 是输入信号

大数据治理:从挑战到最佳实践

引言 随着大数据技术的快速发展,各类组织和企业积累了海量的数据资产。然而,数据的复杂性、异构性和庞大规模也带来了数据管理和利用的诸多挑战。为了确保数据的高效利用、安全性以及合规性,大数据治理应运而生。大数据治理不仅仅是管理数据的存储和处理,它更是一项系统性…