树状数组找出[1,r]中比x小的数的个数

算法竞赛进阶指南0x42 树状数组 阅读详情
#include <bits/stdc++.h>
using namespace std;
#define FOR0(a,b) for(int i = a; i < b; ++i)
#define FORE(a,b) for(int i = a; i <= b; ++i)
typedef long long ll;
typedef pair<int,int> pii;
const int maxn = 3e5+5;
int n,m,tot;
ll a[maxn];
ll pre[maxn];
ll c[maxn];
int f(ll x) {
    return int(lower_bound(pre,pre+tot,x)-pre)+1;
}
int lowbit(int x) {
    return x&(-x);
}
void add(int x) {
    while(x <= tot+1) {
        c[x] += 1;
        x += lowbit(x);
    }
}
ll sum(int x) {
    ll ret = 0;
    while(x > 0) {
        ret += c[x];
        x -= lowbit(x);
    }
    return ret;
}
int main() {
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; ++i) {
        scanf("%lld", &a[i]);
    }
    for(ll i = 1; i <= n; ++i) {
        a[i] += a[i-1];
        pre[i] = a[i];
    }
    sort(pre,pre+n+1);
    tot = unique(pre,pre+n+1)-pre;
    add(f(0));
    ll ans = 0;
    for(int i = 1; i <= n; ++i) {
        ll t = upper_bound(pre,pre+tot,a[i]-m)-pre;
        // cout << a[i]-m <<" " << t << endl;
        ans += sum(tot+1)-sum(t);
        add(f(a[i]));
        // cout << ans << endl;
    }
    cout << ans << endl;
    return 0;
}
Win11只读模式无法关闭的终极解决方案 通过以上方法,我们应该能够解决Windows 11中文件夹无法取消只读状态的问题。如果问题仍然存在,请确保你的账户具有足够的权限来修改文件夹属性,并考虑是否有其他安全软件或策略阻止了权限更改。在操作过程中,请务必小心谨慎,避免误操作导致数据丢失或系统损坏。希望本文能够帮助到大家! 阅读详情

相关推荐

LTE随机接入实战:如何通过PRACH前导码优化小区覆盖半径(附计算公式)

本文深入探讨了LTE网络中PRACH前导码格式对小区覆盖半径的关键影响。通过解析不同前导码格式(如Format 0-3)的物理参数与覆盖能力,提供了核心计算公式与实战Python脚本,指导网络工程师根据覆盖需求、环境多径和容量等因素,科学选择前导码格式以优化边缘用户接入成功率,实现精准的网络规划与优化。

qq_27496129的博客 574

249 · 统计前面比自己小的数的个数

给定一个整数数组(下标由 0 到 n-1, n 表示数组的规模,ai的取值范围由 0 到10000)。对于数组中的每个 ai 元素,请计算 ai 前的数中比它小的元素的数量,并返回数量数组。 在做此题前,我们建议你先完成以下三道题: 线段树的构造, 线段树的查询 II,和 统计比给定整数小的数的个数 。 样例 样例 1: 输入: [1,2,7,8,5] 输出: [0,1,2,3,2] 样例 2: 输入: [7,8,2,1,3] 输出: [0,1,0,0,2] classSolution...

yinhua405的博客 661

SAP ABAP开发避坑:BAPI_MATVAL_PRICE_CHANGE调用报‘估价未维护’的完整解决流程

本文深入解析SAP ABAP开发中调用BAPI_MATVAL_PRICE_CHANGE函数时遇到的'估价未维护'错误,提供从基础配置检查到CKML_PRICE_SEND表维护的完整解决方案。通过实战案例和代码示例,帮助开发者快速定位问题并实现批量价格更新的自动化处理,提升开发效率。

weixin_28705087的博客 427

入门树状数组(左边比x小的个数)

我们在这里求第i个数左边有几个比它小的数,还有右边有几个比它小的数。 那左边的这一种情况来说吧,在这里设置一个数组 C[]吧,先从a[i]向左扫描,让C[k]=1,表示大小位K 的值已经被扫描到了,所以他左边比它小的个数就C[1]+C[2]++++++C[a[i]-1],也就是是sum[a[i]]。然后向上更新点C[a[i]]++。 //左边比他小的数的 个数 //试下1 2 3

1376

智能垃圾桶改造指南:树莓派+垃圾分类模型部署全记录(含数据集获取)

本文提供了一份详尽的智能垃圾桶DIY改造指南,核心是利用树莓派部署轻量化的YOLOv8垃圾分类模型。内容涵盖从数据集获取、模型训练与OpenVINO量化优化,到硬件组装、电路连接及软件集成的全流程,旨在帮助创客和爱好者以低成本实现一个能自动识别垃圾并分类的AIoT原型系统。

k6l7m8n9的博客 509

手把手教你模拟登录豆瓣并爬取个人书影音数据:从Cookie解析到反爬攻防实战

在开始写代码之前,先明确我们需要的工具。:建议用3.10以上版本,方便使用一些新特性(如match语句)httpx:比requests更现代,支持HTTP/2,异步性能强,连接池复用好:解析HTML,语法简单,容错性强selenium:仅用于处理登录时的滑块验证(模拟真人)pandas:最终数据清洗和导出Excel/CSVretrying:自动重试机制,应对临时封禁:随机UA,降低特征lxml:作为BeautifulSoup的解析器,速度快为什么不只用requests?

2201_76125261的博客 577

算法笔记.序列左边比它小的元素个数(树状数组)

题目:给定N个正整数 (N<10^5 每个元素< 10^5,对序列中的每个元素,求出左边比它小的元素个数。 分析: 求比它小的元素个数->区间和;数组大小可以开到10^5,所以不用离散化。 具体做法: 每输入一个元素,update(x, 1);左边比他小的:getsum(x-1); #include <bits/stdc++.h> using namespace std; #define lowbit(x) (x & (-x)) const int N = 1000

zhangjiaji111的博客 1396

RK3576 Buildroot 双机 ADB 异常排障实录:同版 `boot.img`,一台可识别一台不可识别

进程在跑”不等于“USB 枚举成功”,adbd存活只是必要不充分条件。生产环境中的全局别名可能反向污染系统脚本。shell 命令替换中的字符串问题,必须做字节级验证(od -tx1相比“改环境规避”,核心脚本对输入做鲁棒处理更可长期维护。

小灰灰的博客 210

小朋友排队_(树状数组)

n个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是 0。如果某个小朋友第一次被要求交换,则他的不高兴程度增加 1,如果第二次要求他交换,则他的不高兴程度增加 2(即不高兴程度为 3),依次类推。当要求某个小朋友第 k 次交换时,他的不高兴程度增加 k。 请问,要让所有小朋友按从低到...

weixin_44828107的博客 479

Open3D——平面点云凸多边形轮廓提取【2025最新版】

平面点云凸多边形轮廓提起,博客长期更新,本文最近更新时间为:2025年1月6日。

点云侠的博客 6753

计算机网络技术研究方向有哪些创新点

计算机网络技术方向的创新点众多,这些创新不仅推动了网络技术的不断发展和完善,还为用户提供了更高效、更安全、更便捷的网络服务。- 边缘计算是一种将计算和数据存储推向网络边缘的技术,通过将数据处理和分析的任务分散到网络的各个节点,降低了数据传输的延迟,提高了实时性。- 通过网络自动化工具和技术,可以实现网络配置的自动化、网络故障的自动诊断与修复等功能,降低了网络运维的复杂性和成本。- 通过引入人工智能技术,网络可以实现更智能的流量管理、故障预测和自动修复等功能,提高了网络的性能和稳定性。

Loving_enjoy的博客 1495

树状数组

Ultra-QuickSort 先离散化处理在利用树状数组求一个数前面比他小的。 #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<iomanip> #include<algorithm> #include<stack> #include<queue> #include<cstdlib> #in

ljy121121的博客 238

半导体工艺仿真:离子注入工艺仿真_(8).损伤和缺陷仿真

离子注入工艺在半导体制造中是一个重要的步骤,用于在半导体材料中引入特定的掺杂剂。然而,离子注入过程中不可避免地会产生损伤和缺陷,这些损伤和缺陷会直接影响器件的性能和可靠性。因此,对离子注入工艺中的损伤和缺陷进行仿真研究是必不可少的。本节将详细介绍如何使用仿真软件对离子注入过程中的损伤和缺陷进行建模和分析。

2401_87715305的博客 1339

树状数组--求比某一位置x小的数的个数

好好看了一些树状数组的东西,看了一些原理,以1,2,3,4,5为例,代码如下:#include&lt;iostream&gt; #include&lt;cstring&gt; using namespace std; const int MAXX=10000; int a[MAXX]; int c[MAXX]; int S_L[MAXX]; int S_R[MAXX]; int max_a; i...

sdau20163940的博客 1453

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

0x42 树状数组

树状数组

qq_61143965的博客 1079

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

洛谷 P3374 【模板】树状数组 1(树状数组解法)

树状数组是一种高效的数据结构,用于维护序列的区间和,支持单点修改和区间查询操作,时间复杂度均为$O(\log n)$。其核心思想是通过lowbit函数确定每个节点的管辖范围,并通过递推关系快速更新和查询。在实现中,update函数用于单点修改,通过逐级更新父节点来维护区间和;sum函数用于查询前$i$项的和,通过逐级累加子节点的值得到结果。区间查询则通过两次sum调用相减实现。树状数组适用于需要频繁进行单点修改和区间查询的场景,如动态维护序列的区间和。

君义NOIP的博客 1459

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

查询区间小于x的个数,不修改

题意: 给一个长度为n(n<=1e5)的数组 给q个询问,每个询问有l,r,x三个数 每个询问就是查询[l,r]中有多少个<=x的数解法: 先将原数组A排序,并保留原有的下标,排序后的数组为B数组 然后对询问按x从小到大排序 for询问 对每个x暴力处理每一个小于x的B数组元素在原数组A的下标pos,用树状数组对pos+1 这样就说明在pos这个位置有1个小于x的值再进行下区间求和就

turtlew的博客 2526

4316 合适数对(树状数组)

1. 问题描述: 给定一个长度为 n 的整数数列 a1,a2,…,an 和一个整数 t,请你判断共有多少个数对 (l,r) 同时满足: 1 ≤ l ≤ r ≤ n al + al+1+ ... + ar−1 + ar < t 输入格式 第一行包含两个整数 n 和 t。第二行包含 n 个整数 a1,a2,…,an。 输出格式 一个整数,表示满足条件的数对的数量。 数据范围 前三个测试点满足 1 ≤ n ≤ 5; 所有测试点满足 1 ≤ n ≤ 2 × 10 ^ 5,|t| ≤ 2 × 10

二哈 442

求区间不同数的个数 树状数组||莫队算法

题目:https://www.nowcoder.com/acm/contest/139/J题意:给出n个数,求 [1,L],[R,n]这两个区间不同数的个数其实你只要把区间扩大一倍,就是求 [R,L+n]这个区间了 求区间内不同数的个数解决方法有很多 像用离线树状数组、离线莫队、线段树、主席树等等 不过听说主席树会TLE,所以这里主要说一下树状数组和莫队算法1.树状数组(BIT)其实可以用树...

weixin_30666943的博客 305

hdu4417 树状数组(求指定区间比指定数小的数的个数)

http://acm.hdu.edu.cn/showproblem.php?pid=4417 Problem Description Mario is world-famous plumber. His “burly” figure and amazing jumping ability reminded in our memory. Now the poor princess i

ACM,再见! 2611

HDU 6681(树状数组统计平面内射线的交点个数)

HDU 6681(树状数组,统计平面内射线的交点个数) 题目链接:传送门 题意:给出k条射线,求射线将n∗mn*mn∗m 的区域分成几个联通块。每两条射线的端点x坐标和y坐标都互不相同。 思路:根据 欧拉公式 可以推导出联通块的个数等于射线的焦点个数c+1。但其实赛场上根本不知道这个定理,但有个很明显的道理,对于每条竖线,每条横着的射线与该竖线相交都会使联通块个数+1.(注意因为题目限制,这个射线...

Dch19990825的博客 398

树状数组求区间不同种类数(区间 diff)

出现的位置,我们给这些位置打上标记。那么取出所有以。

louisdlee的博客 640

hdu 5869 区间不同GCD个数(树状数组)

Different GCD Subarray Query Time Limit: 6000/3000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 221Accepted Submission(s): 58 Problem Description This ...

diaocuiguo2493的博客 239

Different Integers 树状数组(牛客)

题意: 给你一个数组,与m次询问,问在除(l,r)外的其他数总共有多少个不同的数 思路: 这道题可以用莫队,玄学过,时间卡得非常紧,要是代码写丑了,常数稍微大一些,就TLE了 另外一种方法: 首先有一个小技巧可以把两段隔开的区间变成一段,我们可以在数组后面重复一次原数组,则a[n+i]=a[i],要求[1,l]与[r,n]变成求[r,n+l] 然后我们接下来进行预处理pre[n]前n个数有多少个不...

mzip的博客 308

树状数组-1(模板)

树状数组的基础实现模板

2301_78700895的博客 933

Hdu 6534 莫队+树状数组

差值为 k ,则找 [x-k] 到 [x+k] 区间内的数 树状数组维护个数 #include <bits/stdc++.h> using namespace std; const int maxn = 500005; struct node{int l,r,id;int ans;}q[maxn]; int s[maxn],Be[maxn]; int z[maxn],ni[m...

恒持此志成永志 253
上一篇: CCF 2016-4-4 游戏(bfs标记)
下一篇: [蓝桥杯]倍数问题(背包问题)
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值