bzoj3289 树状数组+莫队

OpenClaw对接本地大模型:Llama3/Qwen/ChatGLM全适配,完全私有化部署 OpenClaw对接本地大模型,是企业级AI智能体落地的必经之路——它不仅解决了数据隐私和合规问题,还能大幅降低成本、提升响应速度、实现定制化。这篇文章我给大家完整拆解了两套部署方案:Ollama(新手首选,5分钟搞定)和vLLM(生产环境首选,高性能),覆盖了Llama3/Qwen/ChatGLM三大主流模型,还有真实的落地案例、高级优化、踩坑避坑指南,看完你就能零代码完成完全私有化的部署。从零开发自定义工具,给OpenClaw添加专属业务能力; 阅读详情

这是本蒟蒻的第一篇博客,在此手动庆祝一下~~
其实今天本来想写一道树链剖分的题但是一直没过(蒟蒻的无奈)……所以只好写前几天莫队的题解啦
这道题分为两个知识点,树状数组和莫队
1。莫队 就是最基本的套路啦,分块+离线排序
2。树状数组 我做这道题本来是奔着莫队的,没想最开始还被树状数组坑了
一定要注意分类讨论两点:
1)pl->a[i].l 和pr->a[i].r 的变化会使ans加还是减
2)
pl->a[i].l ,所影响的是增减的数和它后面的数所组成的逆序对,所以查询树状数组最后return x后面的数
pr->a[i].r ,所影响的是增减的数和它前面的数所组成的逆序对,所以查询树状数组最后return x前面的数
代码见下:

/**************************************************************
    Problem: 3289
    User: DD_D
    Language: C++
    Result: Accepted
    Time:5544 ms
    Memory:2400 kb
****************************************************************/

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=50000+5;
int siz[N],val[N],pos[N];
int tree[N],rt[N];
int n,q,sum,ans;
struct data{
    int l,r,id;
}a[N];
int cmp(data a,data b)
{
    if(pos[a.l]==pos[b.l]) return  a.r<b.r;
    return a.l<b.l;
}
int cmp_id(data a,data b)
{
    return a.id<b.id;
}
int lowbit(int x)
{
    return x&(-x);
}
void add(int x,int d)
{
    for(int i=x;i<=n;i+=lowbit(i))
    tree[i]+=d;
    sum+=d;
}
int query1(int x)//统计树状数组后面 
{
    int tot=0;
    for(int i=x;i>0;i-=lowbit(i))
    tot+=tree[i];
    return sum-tot;
}
int query2(int x)//统计树状数组前面 
{
    int tot=0;
    for(int i=x-1;i>0;i-=lowbit(i))
    tot+=tree[i];
    return tot;
} 
void init()
{
    scanf("%d",&n);
    int block=(int)sqrt(n);
    for(int i=1;i<=n;i++){
        pos[i]=(i-1)/block+1;
        scanf("%d",&siz[i]);
        val[i]=siz[i];
    }
    sort(val+1,val+1+n);
    int tot=unique(val+1,val+1+n)-val;
    for(int i=1;i<=n;i++)
    siz[i]=lower_bound(val+1,val+tot,siz[i])-val;
    scanf("%d",&q);
    for(int i=1;i<=q;i++){
        scanf("%d%d",&a[i].l,&a[i].r);
        a[i].id=i;
    }
}
void solve()
{
    for(int i=a[1].l;i<=a[1].r;i++)
        add(siz[i],1),ans+=query1(siz[i]);
    rt[a[1].id]=ans;
    int pl=a[1].l,pr=a[1].r;
    for(int i=2;i<=q;i++){
        for(;pl<a[i].l;pl++)//多了 统计前面的 
        add(siz[pl],-1),ans-=query2(siz[pl]);
        for(;pl>a[i].l;pl--)//已有的数都是在它的后面,所以统计树状数组前面 
        add(siz[pl-1],1),ans+=query2(siz[pl-1]);
        for(;pr<a[i].r;pr++)//少了 统计后面的 
        add(siz[pr+1],1),ans+=query1(siz[pr+1]);
        for(;pr>a[i].r;pr--)//多了 
        add(siz[pr],-1),ans-=query1(siz[pr]);
        if(a[i].r==a[i].l) {
            rt[a[i].id]=0;
            continue;
        }
        rt[a[i].id]=ans;
    }
}
int main()
{
    init();
    sort(a+1,a+1+q,cmp);
    solve();
    sort(a+1,a+1+q,cmp_id);
    for(int i=1;i<=q;i++)
    printf("%d\n",rt[i]);
    return 0;
}

Matlab:Matlab 软件学习之Matlab内置的各种系统的简介、案例应用(基于Simulink模糊控制仿真/二阶瞬态震荡电路案例)之详细攻略 选择左上角要编辑变量的图标,给定当前变量的论域Range,设置隶属函数类型type(八种隶属函数类型以供选择),最后选中某个隶属度函数(选中为红色),移动绘图区的每个隶属度函数的三个端点(竖向为权重)。(1)、首先在模糊规则编辑器左边选择一个输入变量,并选中它的一个语言值(隶属函数),然后编辑器右边选择一个输出变量,并选中它的一个语言值(隶属函数),然后将这种关系添加到模糊规则中。制定完成后,会形成模糊规则矩阵,系统会根据模糊输入量(如r1、r2),经过模糊规则(如45条),进而确定输出量(Y1、Y2)。 阅读详情

相关推荐

【软件安装系列】Ubuntu+mysql5.7.27+Jira8.3.1+邮箱服务器配置+Confluence6.15.7安装经验和采坑总结

文章目录一、软件准备(百度云易被吞,就不放了)1.1 官网下载的新鲜的Jira和Confluence1.2 linux的jdk一份1.3 Jira和Confluence的破解程序或者破解包一份1.4 java的连接器一份二、安装过程1--java环境配置2.1 将下载下来的jdk包解压在/usr/local/java目录中2.2 写入环境变量三、安装过程2--mysql5.7.27环境配置3.1 ...

xiaosha_的博客 6892

BZOJ3289

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3289 题意:求区间逆序对。 题解:莫队,然后树状数组求逆序对。 注意:要离散化。 比如l,r这段区间增加前面增加一个数a[l-1], 只用考虑l,r这段区间里比 a[l-1]-1 小的数,记为cnt, 答案减去cnt,然后更新下. 比如l,r这段区间后面加一个数a[r+1],

qq_36876305的博客 341

K-Means聚类算法 — 算法原理、质心计算、距离度量、聚类效果评价及优缺点

分类知识   分类是根据样本某些属性或某类特征(可以融合多类特征),把样本类型归为已确定的某一类别中。机器学习中常见的分类算法有:SVM(支持向量机)、KNN(最邻近法)、Decision Tree(决策树分类法)、Naive Bayes(朴素贝叶斯分类)、Neural Networks(神经网络法)等。   但当对海量数据进行分类时,为了降低数据满足分类算法要求所需要的预处理代价,往往需要选...

zhf的博客 1万+

【BZOJ 3289】 Mato的文件管理

【BZOJ 3289】 Mato的文件管理 莫队算法~

Regina8023 1222

Android流畅度优化实战:从掉帧定位到布局与渲染调优

在移动应用开发中,性能优化是决定用户体验与留存率的关键环节,其中Android流畅度优化更是核心命题。用户感知的“卡顿”往往并非持续低帧率,而是由于掉帧率波动引发的偶发不流畅。本文从性能优化理论出发,系统讲解如何使用Systrace、CPU Profiler等工具定位掉帧瓶颈,深入分析布局层级过深、过度绘制、对象分配与GC压力等常见诱因。同时结合冷启动耗时、列表滚动掉帧、Bitmap加载等真实工程案例,阐述从应用层到系统层的分级优化策略,并给出低端机适配、异步化改造及线上监控体系搭建的实践方案。内容覆盖布局

weixin_29185493的博客 200

如何让Arduino IDE支持你手里的STM32 nucleo开发板

Arduino IDE开发环境在默认情况下不支持STM32 NUCLEO开发板,只有通过添加附加开发板管理包才能使用。目前为止,只有一部分板子支持使用Arduino IDE开发环境进行开发,分别是 Nucleo F207ZG, Nucleo F429ZI, Nucleo F030R8, Nucleo F091RC, Nucleo F103RB, Nucleo F303RE, Nucl...

mzw72188552的专栏 8972

【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 1556

人工智能---什么是Transformer?

Transformer是一种强大的神经网络架构,最初由Google的研究人员在论文《Attention is All You Need》中提出,用于自然语言处理任务,特别是在机器翻译方面取得了巨大成功。Transformer的核心思想是完全基于自注意力机制(self-attention mechanism)来实现序列到序列(sequence-to-sequence)的学习。它在自然语言处理(NLP)和其他序列到序列任务中表现出色,逐渐成为该领域的主流模型。近些年也逐渐在自动驾驶领域有所应用。

智能汽车人的博客 3955

[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

基于FPGA的NCO实现

NCO实现原理 数字振荡器 输出频率,相位可控的正弦波,精度高,稳定性高,替代VCO,用起来方便也易于操作。 实现方式: 直接调用fpga里面的ip核,以下是IP核的配置方法: 接下来选择输出为单路还是多路: 最后生成ip核时需要注意的事项: 生成时会需要漫长的等待,因此需要如下操作: 最后成功生成: 实现代码: input clk ; input rst_n ; output [13:0]fsin_i ; wire [13:.

m0_46644103的博客 4581

电子元器件-接口电路篇:RS-232、RS485/422、I2C、SPI、USB、网口

以上规定说明了RS-232C 标准对逻辑电平的定义。对于数据(信息码):逻辑“1”的传输的电平为-3V~-15V,逻辑“0”传输的电平为+3V~+15V;对于控制信号;接通状态(ON)即信号有效的电平为+3V~+15V,断开状态(OFF)即信号无效的电平为-3V~-15V,也就是当传输电平的绝对值大于3V 时,电路可以有效地检查出来;

qq_60226558的博客 887

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

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

185

【CUDA Runtime】第一个“Hello World“程序

CUDA(Compute Unified Device Architecture)是 NVIDIA 提供的一个并行计算平台和编程模型,旨在通过利用 GPU 的强大计算能力来加速计算密集型应用。对于许多开发者而言,开始学习 CUDA 编程的第一步通常是编写一个简单的“Hello World”程序。尽管 CUDA 的实际应用远远超出一个简单的例子,但这个初步的示例能帮助开发者快速入门,理解基本的 CUDA 编程流程。

m0_62599305的博客 1506

【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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

BZOJ 3289 莫队 树状数组

BZOJ 3289 题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=3289 题意: 问[L,R]区间最少交换几次相邻数字使得整个序列有序。 思路: 统计逆序对,用树状数组。然后跑一遍莫队。 离散化部分容易超时,所以直接修改了数组。 源码:#include <cstdio> #include <cstring> #inclu

beihai2013 387

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

bzoj3289 -- 莫队+树状数组

离线。将大小离散,然后用莫队更新树状数组和答案就可以了。 代码: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<cmath> 6 using namesp...

205

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

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

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

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

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

weixin_30262255的博客 105

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

莫队

Unlimited Code Works 288

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

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

weixin_30780221的博客 116

【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的文件管理 莫队+树状数组

bzoj 3289: Mato的文件管理 莫队+树状数组

Rising_shit的博客 447

bzoj3289(莫队+树状数组)

经典题目。 每次删除和加入直接在树状数组里进行统计即可 #include&amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;gt; using namespace std; int a[50100] , n , Q , m; int tmp[50100]; int tr[50100] , belong[50100]; unsigned int ans,out[50100]; struct data { ...

a1035719430的博客 366

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

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

With_thewind的博客 622
下一篇: bzoj2160 拉拉队排练 manacher+差分
五彩蒟蒻DDD
博客等级 码龄10年 20粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值