[BZOJ2741][FOTILE模拟]L(分块+可持久化Trie)

避开内存陷阱:手把手教你用RKNN零拷贝接口正确管理输入输出Tensor 本文深入解析RKNN零拷贝接口在边缘计算中的高效内存管理策略,通过YOLOX实例演示如何避免内存对齐错误和数据错位。详细介绍了`rknn_tensor_mem`系列API的正确使用方法,包括内存创建、绑定、释放全流程,以及性能优化技巧如内存池技术和多核NPU负载均衡,帮助开发者提升推理效率并避开常见陷阱。 阅读详情

=== ===

这里放传送门

=== ===

题解

这道题的答案显然没有办法合并,而平常写分块的大部分题目都是一块一块查出来答案再合并,所以显然需要一些另外的思路。。这道题的做法就是非常常见的一种做法,因为数据范围比较小,所以可以开一个大小为 O(nn√) 的数组记录对于每一块的端点,它到后面每一个点所组成的区间的答案,这个可以直接递推出来。然后当查询一段区间[l,r]的时候,先找到l位置右边离它最近的端点pos,然后[pos..r]这一段区间的答案可以直接查出来,这样就得到了所有左右端点都[pos..r]这一段范围内的答案,然后要处理的就是左端点在[l..pos-1]内的这些区间。而[pos..l]这段范围内的数字个数不会超过 O(n√) 个,所以可以枚举左端点,然后就是找一段范围内能和它构成最大连续异或和的右端点在什么位置了,这个问题就比较经典了,弄一个前缀和就变成了找和它异或和最大的数字,然后用可持久化Trie就可以了。时间复杂度 O(nn√logn) 。

代码

#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define Pow 64
using namespace std;
int n,m,pos[12010],root[12010],tot,len[410],Block,v[70],cnt;
long long a[12010],Ans[410][12010],lastans;
struct Trie{
    int ch[2],val;
}t[1000010];
void Insert(int now,int last,int x){
    int c=0;
    memset(v,0,sizeof(v));
    while (x!=0){v[++c]=(x&1);x>>=1;}
    for (int i=Pow;i>=1;i--){
        t[now].ch[v[i]]=++tot;
        now=t[now].ch[v[i]];
        last=t[last].ch[v[i]];
        t[now]=t[last];t[now].val++;
    }
}
long long Query(int now,int last,int x){
    int c=0;
    long long ans=0;
    memset(v,0,sizeof(v));
    while (x!=0){v[++c]=x&1;x>>=1;}
    for (int i=Pow;i>=1;i--){
        int u=v[i],l1,l2;
        l1=t[now].ch[u^1];l2=t[last].ch[u^1];
        if (t[l1].val-t[l2].val!=0){
            now=l1;last=l2;ans=(ans|(1<<(i-1)));
        }else{now=t[now].ch[u];last=t[last].ch[u];}
    }
    return ans;
}
void BuildBlocks(){
    int tail;
    for (int i=1;i<=n;i=tail+1){
        tail=min(i+Block-1,n);
        ++cnt;len[cnt]=tail;
        for (int j=i;j<=tail;j++) pos[j]=cnt;
        Ans[cnt][i]=a[i]^a[i-1];
        for (int j=i+1;j<=n;j++)
          Ans[cnt][j]=max(Ans[cnt][j-1],Query(root[j+1],root[i-1],a[j]));
    }
}
long long Count(int x,int y,int R){
    long long ans=0;
    for (int i=x;i<=y;i++)
      ans=max(ans,Query(root[R+1],root[i-1],a[i-1]));
    return ans;
}
long long Ask(int x,int y){
    int px,py,H;
    long long ans=0;
    px=pos[x];py=pos[y];
    if (px==py) return Count(x,y,y);
    H=px+1;
    if (x==len[px-1]+1) --H;
    ans=Ans[H][y];
    if (H==px) return ans;
    ans=max(ans,Count(x,len[px],y));
    return ans;
}
int main()
{
    scanf("%d%d",&n,&m);
    for (int i=1;i<=n;i++) scanf("%I64d",&a[i]);
    for (int i=1;i<=n;i++) a[i]^=a[i-1];
    for (int i=0;i<=n;i++){
        root[i+1]=++tot;t[tot]=t[root[i]];
        t[tot].val++;
        Insert(root[i+1],root[i],a[i]);
    }
    Block=floor(sqrt(n));
    BuildBlocks();
    for (int i=1;i<=m;i++){
        long long l,r;
        scanf("%I64d%I64d",&l,&r);
        l=(l+lastans)%n+1;
        r=(r+lastans)%n+1;
        if (l>r) swap(l,r);
        lastans=Ask(l,r);
        printf("%I64d\n",lastans);
    }
    return 0;
}
从查表法到实时计算:SimpleFOC库中正弦函数优化的技术演进 本文深入探讨了SimpleFOC库v2.0.1版本中正弦函数优化技术的演进,从传统查表法到实时计算的创新实践。通过定点数优化、对称性利用和分段线性插值等关键技术,实现了在嵌入式电机控制中的高效三角函数计算,显著提升性能和资源利用率。 阅读详情

相关推荐

vscode远程连接deepin出错:过程试图写入的管道不存在的解决方法

背景:昨天我用vscode使用ssh远程开发还处于正常状态,今天刚打开电脑,并启动deepin,再次使用vscode重新连接就出现异常。意思就是22号默认端口连接被拒绝,所以要先确定ssh是否连接。3.重新进入vscode里面,重新连接,如图成功连接。,查看port后面的端口号是不是22号。1.检查sshd是否启动。

qq_43573047的博客 2946

从调参玄学到数据驱动:模型性能自动化优化实战指南

在模型开发与部署中,性能优化常被视为依赖经验的‘玄学调参’。其本质是将性能问题转化为可度量、可分析、可干预的数据工程问题。核心原理在于构建全面的性能度量体系,结合智能根因分析工具与自动化搜索算法,形成从诊断到优化的闭环。这一技术价值在于显著提升模型在推理速度、内存占用及仿真精度等维度的表现,尤其适用于Simulink复杂动态系统与AI大模型(如Diffusion Model)等场景。通过引入Performance Advisor等工具进行静态检查与动态剖析,并融合超参数自动优化与模型压缩技术,能够系统性地将

531

MATLAB锂离子电池伪二维(P2D)模型实现

锂离子电池伪二维(P2D)模型的MATLAB实现。该模型基于Newman等人提出的经典电化学模型,考虑了固液相扩散、电荷守恒和电化学反应动力学。

hie98894的博客 1930

BZOJ 2741 详解(分块 可持久化Trie树)

2741: 【FOTILE模拟赛】LTime Limit: 15 Sec Memory Limit: 162 MB DescriptionFOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和。 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 … xor Aj),其中l<=i<=j<=r。 为了体现在线操作,对于一个询问(x,

w4149 886

Delphi 12社区版免费了!手把手教你搭建跨平台开发环境(Windows/macOS/Android/iOS)

本文详细介绍了如何利用新发布的Delphi 12社区版,免费搭建支持Windows、macOS、Android和iOS的跨平台开发环境。内容涵盖从环境准备、安装、配置各平台SDK(包括Android与macOS/iOS的PAServer连接),到创建首个FireMonkey跨平台应用、集成数据库以及调试部署的完整实战流程,帮助开发者零成本启动高效开发。

butter的博客 977

多算法数据预测——BP、ELM、LSTM、BiLSTM和SAELSTM,附Matlab源码

本文将为大家介绍基于BP、ELM、LSTM、BiLSTM和SAELSTM多种算法的数据预测,并提供相应的Matlab源码。SAELSTM算法是一种结合自动编码器和LSTM神经网络的深度学习方法,用于时间序列数据预测。ELM算法是一种单层前向神经网络,在单次训练过程中直接产生输出权重,从而具有快速学习和良好推广性能。多算法数据预测——BP、ELM、LSTM、BiLSTM和SAELSTM,附Matlab源码。总体来看,采用多种算法进行数据预测可以提高预测准确率,并可根据不同场景选择适合的算法。

qq_39605374的博客 864

[BZOJ]2741 [FOTILE模拟赛]L

考虑求前缀异或和,那么sum[L-1]^SUM[R]就是L到R得连续异或和,因为我们sum存储的是前缀,又因为相同的数异或为0,且sum[R]包含了sum[L-1],所以两者异或起来,1~L-1的异或贡献被抵消,就只剩下了L~R的贡献.那么问题就转化成为,在L-1到R内选择两个数的sum值异或起来最大. 考虑对于一个数 x 的sum,求与他之前的某个数异或起来最大,那么贪心的肯定让高位的1得到保证,由异或的性质可得我们要从高位到低位找到一个数的高位到低位的每一位尽量与x的每一位相反.那么我们对于序列上的每个

Le Petit Prince 594

AI上推荐 之 多任务loss优化(自适应权重篇)

1. 写在前面 在多任务学习中,往往会将多个相关的任务放在一起来学习。例如在推荐系统中,排序模型同时预估候选的点击率和浏览时间。相对于单任务学习,多任务学习有以下优势: 多个任务共享一个模型,占用内存量减少; 多个任务一次前向计算得出结果,推理速度增加; 关联任务通过共享信息,相互补充,可以提升彼此的表现。 前面的一篇文章,主要是从模型结构的角度聊了下多任务学习,介绍了工业界非常经典也常用的MMOE模型,然而,对于多任务学习, Loss的优化也非常重要, 因为我们知道通过多个目标去指导网络进行统一的训练

Miracle8070 1万+

bzoj 2741 分块 + 可持久化trie

题意是求  【a,b】 中 的最大字段异或和。 。 看了神牛题解才会的。 首先将 区间  转化成   前项和 中两个的异或值。  也就是 将 1- n 个数a[ ],转化成 0-n 个数的数列b[ ]。  也就是 b[ r ] ^ a[ l ]  = a[l+1] ^ a[l+2]^...^a[ r ] b[2] ^ b[ 0 ] = a[1 ]^a[ 2 ] 在查

OceanLight的专栏 2936

深水区探秘:小红书App x-s参数逆向与高并发爬虫实战(2026版)

在移动互联网的碎片化时代,小红书凭借其“社区+电商”的独特模式,积累了超过3亿月活用户。其内容生态覆盖了从美妆、穿搭到旅行、数码等几乎所有垂直领域。对于数据分析师、市场研究员以及AI算法工程师而言,小红书平台蕴含的价值是巨大的——无论是热门趋势洞察、KOL画像分析,还是多模态图文数据的采集。然而,想要高效、稳定地获取小红书App的公开数据,却并非易事。与Web端相比,小红书App的防护体系堪称“铜墙铁壁”。其核心的反爬机制建立在动态混淆的加密参数之上,尤其是请求头中的X-SX-T以及X-S-Common。

2201_76125261的博客 265

电化学-论文分享-NanoStat: An open source, fully wireless potentiostat

本文主要分享论文NanoStat: An open source, fully wireless potentiostat,并记录学习笔记。如果有条件,建议看原文最好。

分享技术笔记,希望对大家能够有一定的帮助,同时也通过归纳总结提升自己的个人能力。 2874

bzoj 2741: 【FOTILE模拟赛】L 可持久化字典树+分块

Description FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和。 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 … xor Aj),其中l&lt;=i&lt;=j&lt;=r。 为了体现在线操作,对于一个询问(x,y): l = min ( ((x+lastans) mod N)+1 , ((y+lasta...

liangzihao1的博客 344

基于改进YOLOv5的小目标检测 | 添加CBAM注意机制 + 更换Neck网络之BiFPN + 增加高分辨率检测头

本文针对图像中小目标难以检测的问题,提出了一种基于YOLOv5的改进模型。在主干网络中,加入CBAM注意力模块增强网络特征提取能力;在颈部网络部分,使用BiFPN结构替换PANet结构,强化底层特征利用;在检测头部分,增加高分辨率检测头,改善对于微小目标的检测能力。本文算法在无人机数据集VisDrone2019数据集上进行了多次对比实验,结果表明本文算法可以有效地检测小目标。🌈

小哥谈 2937

【BZOJ2741】【FOTILE模拟赛】L 分块+可持久化Trie树

【BZOJ2741】【FOTILE模拟赛】L Description FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和。 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 ... xor Aj),其中l<=i<=j<=r。 为了体现在线操作,对于一个询问(x,y): l = min (...

aodanchui1057的博客 227

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

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

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

bzoj 2741: 【FOTILE模拟赛】L 分塊+可持久化trie

2741: 【FOTILE模拟赛】L Time Limit:15 SecMemory Limit:162 MBSubmit:1116Solved:292[Submit][Status] Description FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和。 即对于一个询问,你需要求出max(Ai xor Ai...

alex151194310的博客 144

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【BZOJ】2741: 【FOTILE模拟赛】L-可持久化trie树&分块

分块

远行客 278

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

bzoj 2741: 【FOTILE模拟赛】L(可持久化trie + 分块优化)

预处理 aaa 数组的前缀和,问题就变成在[l - 1,r] 区间内找任意两个数,使得异或值尽可能大。 用可持久化 trie 暴力做 复杂度是O(32∗n∗m)O(32 * n * m)O(32∗n∗m) 即使去掉 32 这个系数,也可能会被卡常,考虑如何优化。 考虑预处理一部分区间的答案,令 f[l][r]f[l][r]f[l][r] 表示 区间 [l,r][l,r][l,r] 的答案,显...

qq_41997978的博客 257

BZOJ 2741【FOTILE模拟赛】L 分块+可持久化Trie树

题目大意给出一个序列,求[l, r]中的最大连续xor xor和。 强制在线思路先把整个序列分成n  √  \sqrt{n}块,预处理每一块的开头到每个数字的最大连续xor xor和。这个我们只需处理出前缀xor xor和,之后用可持久化Trie树就可以搞定。这样询问的右边就是整块的了。剩下左边的随便暴力一下就能过了。。CODE#define _CRT_SECURE_NO_WARNINGS#inc

(╯°口°)╯(┴—┴ 1385

BZOJ 2741【FOTILE模拟赛】L 分块+可持久化trie

BZOJ 2741【FOTILE模拟赛】L 分块+可持久化trie

-Claude 1601

BZOJ 2741: 【FOTILE模拟赛】L(可持久化Trie+分块)

传送门 解题思路   首先求出前缀异或和,那么问题就转化成了区间内选两个数使得其异或和最大。数据范围不是很大考虑分块,设\(f[x][i]\)表示第\(x\)块开头到\(i\)这个位置与\(a[i]\)异或得到的最大的数,而对\(f\)求前缀\(max\)就可以得出每一块的开头到后面任意一点的区间内异或最大。而求\(f\)的过程实际是从区间内取一个数和给定数异或和最大,那么这个可以用\(0/1\)...

weixin_30892889的博客 186

[BZOJ2741]【FOTILE模拟赛】L(分块+可持久化trie树)

题目: 我是超链接 题解: 我们对这个题目转化一下:sum[l−1]" role="presentation" style="position: relative;">sum[l−1]sum[l−1]sum[l-1]^sum[r]" role="presentation" style="position: relative;">sum[r]sum[r]sum[r],每个询问就转

薇小薇 363

BZOJ 2741 【FOTILE模拟赛】L 分块+可持久化Trie树

题目大意:给定一个序列,多次询问[l,r]中最大子序异或和 强制在线 一直RE的同学注意,本题的强制在线如果直接加会爆int导致调用数组下标为负 首先我们有一个转化 维护前缀异或和数组a[] 那么[l,r]中最大子序异或和就是a数组中[l-1,r]中任取两个数的最大异或值 然后分块处理 对于每块的第一个数a[i] 我们依次处理出对于所有的j>=i的[i,j]中的最大异或值 即s[i][j]=

世界 2573

bzoj 2741: 【FOTILE模拟赛】L 分块+可持久化trie

题意给出一个序列A,每次询问一段区间[l,r]内最大的连续异或和。强制在线。 n<=12000,m<=6000,A[i]<=maxint分析可以先预处理出前缀异或和,这样就变成了在区间内选两个数使其异或和尽量大。这个问题显然要用到可持久化trie。 我没有往分块上面想,但只要想到分块这题就很水了。 可以预处理出mx[i,j]表示第i块的开头到j这一段的答案,那么每次询问的时候找到第一个作为块开

beginend 466

BZOJ 2741 【FOTILE模拟赛】L 可持久化Trie 分块

题意在线求a[l,r]间最大连续子串xor和。题解我的程序竟然排Rank 6,不科学。。。 a[l,r]的xor和转化为b[l-1]^b[r] 那么问题转化为求b[l-1,r]的任意2个数的xor和的最大值。 如果一个数固定,那么就可以把问题转化为BZOJ 3261。 所以我们每n−−√\sqrt n取一个数,预处理出它到后面每个数的xor的最大值,比如对于a[n−−√]a[\sqrt n]

とある黄鱼のOIブログ 722

BZOJ2741 【FOTILE模拟赛】L 可持久化Trie+分块

题意:给定长度为n的序列,m次询问区间最大连续子段异或和 n Sol: 首先搞前缀异或和,问题变成询问区间选两个数最大异或和 然后考虑暴力 设f[i][j]表示区间i - j 答案 f[i][j]=max(f[i+1][j],calc(a[i],i+1,j)) calc(x,l,r)表示x与[l,r]中数的最大异或值 然后分块大法好,f[i][j]表示i块到j块的,询问时整块直接得到,两

Flere825的博客 748

BZOJ2741 【FOTILE模拟赛】L 【可持久化trie + 分块】

题目 FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和。 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 ... xor Aj),其中l<=i<=j<=r。 为了体现在线操作,对于一个询问(x,y): l = min ( ((x+lastans) mod N)+1 , ((y+lastans) mod N)+...

weixin_30419799的博客 152
上一篇: [POJ2826]An Easy Problem?!(计算几何)
下一篇: [BZOJ2729][HNOI2012]排队(组合数学+高精度)
FromATP
博客等级 码龄10年 75粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值