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

scGPT实战指南:如何用生成式AI加速你的单细胞多组学研究? 本文提供了scGPT在单细胞多组学研究中的实战指南。详细介绍了从环境部署、数据预处理到细胞类型注释与扰动预测等核心任务的操作流程。通过利用生成式AI和Transformer基础模型,scGPT能够显著加速分析,并提升细胞注释的准确性及基因调控网络推断的深度,为研究人员提供了强大的AI分析引擎。 阅读详情

首先题目意思很简单
就是求每一段区间内的逆序对个数 在我认知中有两种求逆序对的方法 1.归并排序可以求逆序对 2.树状数组求逆序对 修改和查询都是O(logn)的复杂度
本题要不断修改逆序对数据结构只能选择树状数组
然后 就往莫队上去套咯 离线求解 分块 然后按左端点所在的块排序 再按后端点排序
定义一个L,R,不断++,–,update树状数组和更新ans就好了 不过感觉有点抽象 一个小bug调了20多分钟
莫队嘛 反正就是很神奇的暴力 不用多想
注意要离散 因为不知道数据范围
用了莫队就把n^2优化到了n^1.5是不是很神奇呢 其实我也这么觉得 非常神奇
当然这只是最基础的莫队 还有高级一点的莫队要在树上进行 以后有机会再写
大家先看懂这个莫队

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<queue>
#include<vector>
#define M 50005
#define ll long long
using namespace std;
struct node{
    int l,r,id;
    int ans;
}Q[M];
int ans,n,m,block[M],A[M],c[M];
int sum(int i){
    int res=0;
    while(i){
        res+=c[i];
        i-=i&-i;
    }
    return res;
}
void update(int i,int x){
    while(i<=n){
        c[i]+=x;
        i+=i&-i;
    }
}
bool cmp(node a,node b){
    if(block[a.l]!=block[b.l])return block[a.l]<block[b.l];
    return a.r<b.r;
}//按块来排序
bool cmp1(node a,node b){
    return a.id<b.id;
}//最后输出的时候还是要按顺序输出的嘛 按id排个序就好了 \(^o^)/~
void Rd(int &res){
    char c;res=0;
    while(c=getchar(),!isdigit(c));
    do res=(res<<1)+(res<<3)+(c^48);
    while(c=getchar(),isdigit(c));
}//读入挂 可以自行忽略
void init(){
    Rd(n);
    int limit=sqrt(n);
    int B[M];
    for(int i=1;i<=n;i++){
        Rd(A[i]);
        B[i]=A[i];
        block[i]=(i-1)/limit+1;
    }
    sort(B+1,B+n+1);//以下几行都是离散操作 sort unique lower_bound
    int k=unique(B+1,B+n+1)-B-1;
    for(int i=1;i<=n;i++)A[i]=lower_bound(B+1,B+k+1,A[i])-B;
    for(int i=1;i<=n;i++){
        update(A[i],1);
        ans+=i-sum(A[i]);//先初始化ans 即逆序对的个数
    }
//  printf("逆序对=%d\n",ans);
    Rd(m);
    for(int i=1;i<=m;i++){
        Rd(Q[i].l);Rd(Q[i].r);
        Q[i].id=i;
    }
    sort(Q+1,Q+m+1,cmp);
}
void solve(){
    int l=1,r=n;//l和r都在最左和最右 然后ans也已经初始化好了 接下来就要开始快乐的暴力环节
    for(int i=1;i<=m;i++){//update更新环节需要自己参悟了 也不能帮太多 这个挺好推的 时刻更新树状数组和ans就好
        while(l<Q[i].l){
            ans-=sum(A[l]-1);
            update(A[l],-1);
            l++;
        }
        while(l>Q[i].l){
            l--;
            update(A[l],1);
            ans+=sum(A[l]-1);
        }
        while(r<Q[i].r){
            r++;
            update(A[r],1);
            ans+=r-l+1-sum(A[r]);
        }
        while(r>Q[i].r){
            ans-=r-l+1-sum(A[r]);
            update(A[r],-1);
            r--;
        }
        Q[i].ans=ans;//最后挪到了要求访问的区间 就把ans记录下来
    }
    sort(Q+1,Q+m+1,cmp1);
    for(int i=1;i<=m;i++)printf("%d\n",Q[i].ans);//输出答案
}
int main(){
    init();
    solve();
    return 0;
}
给跨代引用记一本账:Java GC 的分配路径、卡表写屏障与收集器版图快速回顾 本文把 Java GC 的零散名词串成一条推理链路:从 TLAB 指针碰撞分配、逃逸分析,到 Eden、Survivor 与晋升的四条路,重点拆解卡表与写屏障如何为老年代指向新生代的引用记账,及 Minor GC 如何只扫脏卡。基于 JDK 8 实测:分散写使 Young GC 停顿涨 10~15 倍,条件卡标记消除卡表伪共享,计数循环让 System.gc 等待 2.7 秒,Survivor 过小使晋升量增加约 400 倍。文末梳理 JDK 8 到 27 的收集器演进、选型路径与排查顺序。 阅读详情

相关推荐

2、通过mos管构成的逻辑门电路

一、总结 mos管 是构成 逻辑门电路 的最基本单元。 各个逻辑门电路的真值表如下: 二、各种门 1、非门 NOT 2、与门 AND 3、与非门 把上面与门电路 右边的 非门电路 去掉 NAND 4、或门 OR 5、或非门 NOR 把或门右边的非门电路去掉 6、异或门 XOR 两个输入相异为1,相同为0。 7、同或门 XNOR 两个输入相同为1,相异为0。 ...

engineer0的博客 4万+

【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

医疗信创国产化替代目前面临哪些难题?如何利用国产虚拟化技术促进医院信创建设

业务系统众多,存在大量信创改造模糊地带,既有老系统,也有新系统,故障点多,管理难度高,IT人力资源不足,其对硬件的支撑能力也提出了越来越高的要求,由此造成硬件成本、管理成本以及能耗成本都非常高。

云宏winhong的博客 2660

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

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

185

GEO数据库数据下载方法总结

#GEO数据下载 GEO是生信分析经常用到的数据库。经常需要从中获取表达矩阵,平台信息,meta信息等,本博文总结了几种下载GEO数据的方法,各有优劣,实际应用过程中自行选择适合自己的。 ##方法一:直接从浏览器中下载 以数据集GSE1001为例, 可以直接点击“Series Matrix Files”获取该样本txt格式的表达谱数据,一般我们认为这种处理过的表达谱数据是没有问题的,当然,具体情况具体分析。 打开下载的文件可以看到许多“#”开头的行,这些是注释信息,一般关注这些注释信息中的“data pr

sakoko_的博客 4万+

基于SpringBoot+Vue的公司考勤管理系统

为什么选择我博主是优快云毕设辅导博客第一人兼开派祖师爷、博主本身从事开发软件开发、有丰富的编程能力和水平。专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流和合作。

m0_71849512的博客 1162

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

任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=3289 3289: Mato的文件管理 Time Limit:40 SecMemory Limit:128 MBSubmit:4917Solved:2041[Submit][Status][Discuss] Description Mato同学从各路神犇以...

weixin_30299539的博客 111

手把手教你用QEMU模拟AST2600-EVB开发板:OpenBMC环境搭建全流程

本文提供了一份详尽的实战指南,手把手教你使用QEMU模拟器搭建AST2600-EVB开发板的OpenBMC环境。内容涵盖从工具链准备、系统镜像获取(官方与自编译),到QEMU启动命令解析、网络配置(用户与桥接模式),以及通过SSH、WebUI和Redfish API访问服务的全流程,帮助开发者在个人电脑上快速构建安全、可复现的嵌入式开发与测试沙盒。

play7的博客 1134

bzoj3289 Mato的文件管理

莫队算法+树状数组

AaronPolaris 4308

”COMSOL“竟然如此简单!我悟了!!

COMSOL Multiphysics具有强大的多物理场全耦合仿真分析功能、高效的计算性能,可以保证数值仿真的高度精确,已被广泛应用于各个学科领域,近年来运用COMSOL来解决电化学实际工程问题也越来越普遍。

C1012562281的博客 3448

基于AI的智能开发环境—Trae在Web开发中的应用实战与性能评估【Trae项目实战】

Trae 是一款与 AI 深度集成的开发工具,提供智能问答、代码自动补全和基于 Agent 的 AI 自动编程能力,极大提升开发效率。它具备完备的 IDE 功能,如代码编写、项目管理和源代码管理等,同时还具备强大的 AI 助手,能够提供智能问答、实时代码建议、代码片段生成等服务。开发者可以通过自然语言与 AI 协作,从 0 到 1 开发项目,AI 会根据需求自动生成代码或创建文件。

一键难忘的博客 3万+

BZOJ3289: Mato的文件管理 莫队

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

Oakley 460

【CSP-S 提高组】考试大纲集合

【CSP-S提高组】考试大纲集合

weixin_42596089的博客 7255

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

莫队

Unlimited Code Works 288

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

bzoj 3289 - Mato的文件管理

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

青烟绕指柔的博客 407

visio安装包

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

bzoj3289Mato的文件管理

bzoj3289Mato的文件管理 题意: 一共有n份资料,每天随机选一个区间[l,r],Mato按文件从小到大的顺序看编号在此区间内的这些资料。他先把要看的文件按编号顺序依次拷贝出来,再用排序程序给文件大小排序。求每天排序时的交换次数。 题解: 还是莫队,但是转移的时候用树状数组维护逆序对个数,总复杂度为O(nsqrt(n)log2n)。因为是从大到小插入的,所以维护时要用r-...

anheku1562的博客 122

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

BZOJ3289Mato的文件管理

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

dolphin198455的博客 120

[bzoj 3289] Mato的文件管理

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

diezhe3537的博客 151

Bzoj3289 Mato的文件管理

Time Limit:40 SecMemory Limit:128 MBSubmit:2272Solved:930 Description Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号。为了防止他人偷拷,这些资料都是加密过的,只能用Mato自己写的程序才能访问。Mato每天随机选一个区间[l,r],...

dezhen7015的博客 114

bzoj3289: Mato的文件管理

传送门:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3289 思路:比较裸的莫队。 交换次数显然是逆序对个数... 然后考虑怎么从[l,r]的逆序对个数得到[l,r+1]的逆序对个数。 先离散化,用树状数组维护权值,我们只要考虑对于新加进来的这个数,原区间中有多少个数大于它,拿区间长度去减就可以得到这个数的贡献。 删除一个数类似

thy的专栏 1259

【BZOJ3289】Mato的文件管理 莫队

题目描述   Mato同学从各路神犇以各种方式(你们懂的)收集了许多资料,这些资料一共有n份,每份有一个大小和一个编号。为了防止他人偷拷,这些资料都是加密过的,只能用Mato自己写的程序才能访问。Mato每天随机选一个区间[l,r],他今天就看编号在此区间内的这些资料。Mato有一个习惯,他总是按文件大小从小到大看资料。他先把要看的文件按编号顺序依次拷贝出来,...

a15063149271的博客 154

【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

BZOJ 3289 Mato的文件管理 莫队算法+树状数组

题目大意:给定一个序列,多次询问区间内逆序对的数量 总算是明白城市旅行是如何RE的了……尼玛BZOJ坑爹 ostream输出流过大居然会RE!输出时顺手用了cout结果各种RE不止……原来是这样 建议各位在死活RE就是找不到原因的时候检查一下是否大输出用了cout 这题用莫队可以很简单搞掉 逆序对用树状数组就可以维护 一会去想想强制在线怎么搞 #include #include #in

世界 1625

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

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

aodanchui1057的博客 137
上一篇: 莫队模板题 小Z的袜子
下一篇: USACO2014FebruaryGold Roadblock Dijkstra+路径还原
With_thewind
博客等级 码龄10年 5粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值