BZOJ 3289: Mato的文件管理 【莫队 + 树状数组】

从零到一:YOLOv8在边缘设备上的轻量化部署实战 本文详细介绍了YOLOv8在边缘设备上的轻量化部署实战,涵盖模型优化、TensorRT加速、剪枝与知识蒸馏等关键技术。通过工业质检和智能门禁项目案例,展示了如何将YOLOv8高效部署到树莓派、Jetson Nano等资源受限设备,显著提升推理速度和降低内存占用。文章还提供了动态分辨率调整、多模型级联部署等实用技巧,助力开发者实现边缘AI应用的高效落地。 阅读详情

任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=3289

3289: Mato的文件管理

Time Limit: 40 Sec  Memory Limit: 128 MB
Submit: 4917  Solved: 2041
[Submit][Status][Discuss]

Description

Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号
。为了防止他人偷拷,这些资料都是加密过的,只能用Mato自己写的程序才能访问。Mato每天随机选一个区间[l,r
],他今天就看编号在此区间内的这些资料。Mato有一个习惯,他总是从文件大小从小到大看资料。他先把要看的
文件按编号顺序依次拷贝出来,再用他写的排序程序给文件大小排序。排序程序可以在1单位时间内交换2个相邻的
文件(因为加密需要,不能随机访问)。Mato想要使文件交换次数最小,你能告诉他每天需要交换多少次吗?

Input

第一行一个正整数n,表示Mato的资料份数。
第二行由空格隔开的n个正整数,第i个表示编号为i的资料的大小。
第三行一个正整数q,表示Mato会看几天资料。
之后q行每行两个正整数l、r,表示Mato这天看[l,r]区间的文件。
n,q <= 50000

Output

q行,每行一个正整数,表示Mato这天需要交换的次数。

Sample Input

4
1 4 2 3
2
1 2
2 4

Sample Output

0
2
//样例解释:第一天,Mato不需要交换
第二天,Mato可以把2号交换2次移到最后。

 

 

题意概括:

其实就是查询区间的逆序数。

 

解题思路:

首先根据数据范围,可以先对数据进行离散化。

用树状数组维护当前区间出现的数,那么 X 的逆序数就是在 X 之前已存在当前区间的比 X 大的数,通过树状数组这个很容易实现,然后通过莫队离线操作进行区间的转移。

 

AC code:

 1 #include <bits/stdc++.h>
 2 #define INF 0x3f3f3f3f
 3 #define LL long long
 4 using namespace std;
 5 const int MAXN = 5e4+10;
 6 
 7 int N, M;
 8 struct Query
 9 {
10     int l, r, idx;
11 }Q[MAXN];
12 int unit;
13 int a[MAXN], b[MAXN], ans[MAXN];
14 int t[MAXN];
15 int lowbit(int x){return x&(-x);}
16 bool cmp(struct Query a, struct Query b)
17 {
18     int la = a.l/unit, lb = b.l/unit;
19     if(la == lb) return a.r < b.r;
20     return la < lb;
21 }
22 
23 void add(int x, int val)
24 {
25     for(int i = x; i < MAXN; i+=lowbit(i))
26         t[i] += val;
27 }
28 
29 int ask(int x)
30 {
31     int res = 0;
32     for(int i = x; i; i-=lowbit(i))
33         res+=t[i];
34     return res;
35 }
36 
37 void solve()
38 {
39     int L = 1, R = 0, cur = 0;
40     for(int i = 1; i <= M; i++){
41         while(L < Q[i].l) {cur-=ask(a[L]-1); add(a[L], -1);L++;}
42         while(L > Q[i].l) {cur+=ask(a[L-1] - 1); add(a[L-1], 1); L--;}
43         while(R < Q[i].r) {cur+=R-L+1-ask(a[R+1]); add(a[R+1], 1); R++;}
44         while(R > Q[i].r) {cur-=R-L+1-ask(a[R]); add(a[R], -1); R--;}
45         ans[Q[i].idx] = cur;
46     }
47 
48     for(int i = 1; i <= M; i++){
49         printf("%d\n", ans[i]);
50     }
51 }
52 
53 int main()
54 {
55     scanf("%d", &N);
56     unit = sqrt(N);
57     for(int i = 1; i <= N; i++){ scanf("%d", &a[i]); b[i] = a[i];}
58     scanf("%d", &M);
59     for(int i = 1; i <= M; i++){
60         scanf("%d %d", &Q[i].l, &Q[i].r);
61         Q[i].idx = i;
62     }
63     sort(b+1, b+N+1);                   //离散化
64     int cnt = unique(b+1, b+1+N)-b-1;
65     for(int i = 1; i <= N; i++){
66         a[i] = lower_bound(b+1, b+1+cnt, a[i]) - b;
67     }
68 
69     sort(Q+1, Q+1+M, cmp);              //莫队分区
70 
71     solve();
72 
73     return 0;
74 }

 

Windows事件ID 10010报错:DCOM注册超时与Game Bar修复指南 DCOM(分布式组件对象模型)是Windows中用于跨进程组件通信的核心机制,其注册超时问题常表现为事件ID 10010报错。当Game Bar的PresenceWriter组件因权限配置不当、组件损坏或开机资源竞争而无法在限定时间内向DCOM注册时,系统会记录该错误,并可能伴随DCOM服务主机CPU占用升高或游戏栏功能异常。理解DCOM激活原理与Network Service账户权限,有助于从权限修复、组件重注册及开机时序优化等层面系统排查。本文针对不同Windows版本,提供从静默处理到根治的完整方案, 阅读详情

相关推荐

单像素成像技术原理与Matlab仿真实现

傅里叶变换是数字图像处理的核心数学工具,它将图像从空间域转换到频率域表示。基于傅里叶频谱分析的成像技术通过采集关键频率分量实现图像重建,这种原理催生了单像素成像这一创新技术。单像素成像利用空间光调制器和单个探测器直接测量傅里叶系数,结合压缩感知算法实现高效成像,在红外、太赫兹等特殊波段展现出独特优势。通过Matlab仿真可以验证傅里叶基测量矩阵的构建、压缩感知重建等关键技术环节,为实际系统开发提供理论基础。该技术在弱光环境成像、显微观测等领域具有重要应用价值,其低成本特性也大大降低了特殊波段成像的门槛。

weixin_29061425的博客 345

bzoj3289 树状数组+莫队

树状数组 莫队

五彩蒟蒻DDD的博客 625

容器内存黑洞排查手册:当PageCache让你的Pod莫名被OOM时

本文深入剖析了容器环境中因Linux内核PageCache机制导致Pod被OOM Killer终止的“内存黑洞”问题。文章解释了Kubernetes基于Working Set内存指标进行OOM判断的逻辑,揭示了传统监控工具与cgroup统计的差异,并通过典型场景分析、实战诊断工具和优化策略,提供了从问题定位到系统调优的完整解决方案。

weixin_29294975的博客 224

【BZOJ】3289: Mato的文件管理【区间逆序对,莫队套树状数组】

传送门:【BZOJ】3289: Mato的文件管理 my code: #include #include #include #include using namespace std ; typedef long long LL ; #define rep( i , a , b ) for ( int i = ( a ) ; i < ( b ) ; ++ i ) #defi

poursoul 1557

告别网络卡顿!保姆级教程:用国内镜像源5分钟搞定ESP32开发环境(Arduino IDE)

本文提供了一份保姆级教程,教你如何利用国内镜像源在5分钟内快速搭建ESP32开发环境(Arduino IDE),告别网络卡顿问题。教程详细介绍了镜像源配置、开发板安装、测试程序烧录等步骤,并包含与巴法云对接的实战案例,帮助开发者高效完成物联网项目。

weixin_42536058的博客 592

别再死记硬背GNN公式了!用PyTorch Geometric从零实现一个GraphSAGE(附完整代码)

本文通过PyTorch Geometric从零实现GraphSAGE模型,深入解析图神经网络的核心原理与实战应用。文章提供完整代码示例,涵盖环境配置、邻居采样、信息聚合等关键步骤,帮助开发者掌握图表示学习技术,避免陷入公式推导的困境。适合希望将GNN应用于实际项目的中级开发者和学生。

weixin_42530570的博客 348

hihoCoder---1488 : 排队接水【莫队+树状数组】

题目: https://hihocoder.com/problemset/problem/1488?sid=1476371 分析: 对于每个区间,不难发现将该区间的时间从小到大排序后,依次接水是最优的,考虑离线后莫队算法处理,对于每次插入或删除一个数,只需计算出当前区间比它小的数的和,和比它大的数的个数,即可直接得到最小等待时间,用两个树状数组维护即可 代码: #include &lt...

KobeDuu 279

uniapp | vue2 | vue3 - 解决调用天地图功能服务时 http 网络请求报错 net::ERR ABORTED 503(Service Temporarily Unavailabl)

vue,uni-app,天地图,请求报错,503,请求失败,map.tianditu,天地图503,天地图请求503,接口503错误怎么办,vue天地图,uniAPP天地图,获取定位接口服务器报错503,获取当前定位,定位功能,IP属地定位,天地图服务器报错,如何解决报错,net::ERRABORTED503(ServiceTemporarilyUnavailabl),GET,POST,服务暂时不可用,react天地图,一直等待吗,报错怎么办,定位报错,轨迹,经纬度,天地图服务器503,在vue2

🏆 前端领域优质创作者 4438

[BZOJ3289]Mato的文件管理 Solution

题意:给一个序列,若干个询问,每次询问一个区间的逆序对个数。 考虑数据范围很小,就可以使用莫队,如何计算扩展的一个点的贡献?用树状数组维护即可。 code:code:code: #include <bits/stdc++.h> #define int long long #define regi register int int n,q; int a[51000]; int tmp[5...

chenzhuo__的博客 187

Stable Diffusion WebUI 安装前准备

大家好,我是水滴~~在安装 stable-diffusion-webui 前需要做一些准备工作,本篇文章主要介绍需要的电脑配置、魔法、安装 Python、安装 Git 等。

水滴的博客 2101

手把手教你学simulink(8.39)--基于Simulink的步进电机(Stepper Motor)仿真实例

通过这个仿真实例,你可以学习如何使用Simulink构建和仿真步进电机(Stepper Motor)系统。你可以根据实际需求调整模型和参数,进行更复杂的仿真和分析。希望这个例子对你有所帮助,祝你学习愉快!

MHD0815的博客 1052

BZOJ_3289_Mato的文件管理_莫队+树状数组

BZOJ_3289_Mato的文件管理_莫队+树状数组 Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号 。为了防止他人偷拷,这些资料都是加密过的,只能用Mato自己写的程序才能访问。Mato每天随机选一个区间[l,r ],他今天就看编号在此区间内的这些资料。Mato有一个习惯,他总是从文件大...

185

C#实战:YOLOv5+海康工业相机上位机开发全攻略(从图像采集到检测落地)

工业场景下AI质检系统的开发需要综合考虑硬件适配性、算法性能和稳定性。本文针对新能源电池极片缺陷检测场景,提出基于海康工业相机+YOLOv5+C#的技术方案,涵盖以下关键点: 工业级技术选型:选择支持全局快门的海康相机、OpenCvSharp图像处理、YOLOv5s轻量化模型,确保在无GPU工控机上稳定运行。 开发流程优化: 海康SDK集成:详细说明DLL配置和常见报错解决方案 YOLOv5模型导出:强调batch=1、opset12等工业适配参数 相机采集封装:提供线程安全的C#封装类,支持触发采集模式

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1197

【BZOJ3289】【莫队分块+树状数组求逆序对】Mato的文件管理

3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MB Submit: 1123  Solved: 495 [Submit][Status][Discuss] Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号。为了防止他人偷拷,这些资料都是加密过的

snowy_smile的博客 754

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

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

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

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

[bzoj3289]Mato的文件管理 莫队+树状数组

莫队

Unlimited Code Works 288

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

bzoj3289 Mato的文件管理 莫队+树状数组

题目链接:传送门 题目大意: 给定一个nnn个数的序列,有qqq个询问,每个询问给出区间[l,r][l,r][l,r],要求输出[l,r][l,r][l,r]区间内逆序对的数量。 n,q&lt;=5∗104n,q&lt;=5*10^4n,q<=5∗104 容易看出,最小的交换次数=区间逆序对个数(很显然,因为一次交换只能减少一个逆序对) ...

The_OIer的博客 300

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【BZOJ3289】Mato的文件管理 莫队+树状数组

题目大意:给定一个长度为 N 的序列,M 个询问,每次询问区间逆序对的个数。 题解:用树状数组加速答案转移。 代码如下 #include <bits/stdc++.h> #define fi first #define se second #define pb push_back #define mp make_pair #define all(x) x.begin(),x....

K1385170的博客 163

BZOJ3289 Mato的文件管理 莫队 树状数组

原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ3289.html 题目传送门 - BZOJ3289 题意   给定一个序列 $a$ , 有 $n$ 个元素。   给定 $m$ 次询问,每次问一个区间内,只通过交换相邻元素,问至少交换多少次才能使得区间升序。   $n,m\leq 50000$ , $a_i$ 需要离散化 题解   一道不...

weixin_30262255的博客 105

BZOJ 3289 Mato的文件管理 | 莫队 树状数组

BZOJ 3289 Mato的文件管理 题意 求区间逆序对。 题解 在莫队的基础上使用树状数组求逆序对。 在当前区间左侧加入一个数时,res += 原区间比它小的数的个数; 在当前区间右侧加入一个数时,res += 原区间比它大的数的个数; 在当前区间左侧删除一个数时,res -= 原区间比它小的数的个数; 在当前区间右侧删除一个数时,res -= 原区间比它大的数的个数; #include &l...

weixin_30780221的博客 116

BZOJ 3289 Mato的文件管理 - 一般莫队+树状数组

很好想的一个思路是:一个以排列好的数组,在开头添加一个数,那么需要互换的次数恰等于此数在数列中应有的rank值;而在末尾则是数组长度减去rank值。而一个混乱的序列在上一状态已经使用res的次数排成有序数列,因此每次插入一个值只需要通过rank改变res即可。 rank即为数列中有多少数小于它,这里需要注意有多少数小于它可以利用树状数组。这种计数题利用树状数组的+1,-1表示状态的情况很常见。

x_1023的博客 241

莫队+树状数组 题解【bzoj3289】Mato的文件管理

首先题目意思很简单 就是求每一段区间内的逆序对个数 在我认知中有两种求逆序对的方法 1.归并排序可以求逆序对 2.树状数组求逆序对 修改和查询都是O(logn)的复杂度 本题要不断修改逆序对数据结构只能选择树状数组 然后 就往莫队上去套咯 离线求解 分块 然后按左端点所在的块排序 再按后端点排序 定义一个L,R,不断++,–,update树状数组和更新ans就好了 不过感觉有点抽象 一个

With_thewind的博客 622

BZOJ3289 Mato的文件管理 【莫队 + 树状数组】

3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MB Submit: 3964  Solved: 1613 [Submit][Status][Discuss] Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号。为了防止他人偷拷,这些资料都是加密过

Mychael的无声乐章 304

bzoj-3289-Mato的文件管理(莫队+树状数组)

题目链接:bzoj-3289-Mato的文件管理最大交换次数应该是区间的逆序对数,每次交换消除一个逆序对(不会证明)。 求逆序对可以用树状数组来实现。每次转移是 O(logn)O(logn) 的。 因此总复杂度是 O(n√logn)的O(\sqrt{n}logn)的 。#include<bits/stdc++.h> using namespace std; typedef long long l

On the way 763
上一篇: HDU 4676 Sum Of Gcd 【莫队 + 欧拉】
下一篇: BZOJ 3744: Gty的妹子序列 【分块 + 树状数组 + 主席树】
莜莫oO
博客等级 码龄9年 7粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值