当前位置: 首页 > news >正文

CF1093G Multidimensional Queries - crazy-

题意

\(k\) 维空间中,处理 \(q\) 个如下两种类型的操作:

  • \(1\ i\ b_1\ b_2\ \dots\ b_k\) —— 将第 \(i\) 个点的坐标设为 \((b_1, b_2, \dots, b_k)\)
  • \(2\ l\ r\) —— 查询区间 \([l, r]\) 内任意两点 \(a_i\)\(a_j\) 之间的最大曼哈顿距离(\(l \leq i, j \leq r\))。

\(1 \leq n,q \leq 2 \times 10^5\)\(1 \leq k \leq 5\)\(-10^6 \leq b_{i,j} \leq 10^6\)

题解

观察到 \(k\) 很小,暴力将曼哈顿距离中的绝对值拆开。

定义 \(f[i][x]\)\(i\) 个数状态为 \(x\) 时的和。

状态定义为对于 \(x\) 二进制下的第 \(i\) 位,则其系数取正,否则取负。

容易观察到最终答案就是 \(\max \{f_1+f_{30},f_2+f_{29},......\}\)

\(32\) 个线段树即可。

代码

#include<bits/stdc++.h>
#define ls (p<<1)
#define rs (p<<1|1)
#define mid (l+r>>1)
// #define int long long
using namespace std;
const int Maxn=2e5+10;
int n,q,k;
struct status
{int a[32];status() {memset(a,0xcf,sizeof(a));}void operator =(const vector<int> &x){for(int i=0;i<(1<<k);i++){a[i]=0;for(int j=0;j<k;j++){if(i&(1<<j)) a[i]+=x[j];else a[i]-=x[j];}}}
};
status f[4*Maxn];
status operator+(status x,status y)
{status re;for(int i=0;i<(1<<k);i++) re.a[i]=max(x.a[i],y.a[i]);return re;
}
void push_up(int p) {f[p]=f[ls]+f[rs];}
void change(int p,int l,int r,int tar,vector<int>x)
{if(l==r) return f[p]=x,void();if(tar<=mid) change(ls,l,mid,tar,x);else change(rs,mid+1,r,tar,x);push_up(p);
}
status query(int p,int l,int r,int tl,int tr)
{if(tl<=l && tr>=r) return f[p];if(tr<=mid) return query(ls,l,mid,tl,tr);if(tl>mid) return query(rs,mid+1,r,tl,tr);return query(ls,l,mid,tl,tr)+query(rs,mid+1,r,tl,tr);
}
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n>>k;for(int i=1;i<=n;i++){vector<int>v;for(int j=1;j<=k;j++){int x; cin>>x;v.push_back(x);}change(1,1,n,i,v);}cin>>q;while(q--){int opt;cin>>opt;if(opt==1){int p;cin>>p;vector<int>v;for(int i=1;i<=k;i++){int x;cin>>x;v.push_back(x);}change(1,1,n,p,v);}else{int l,r;cin>>l>>r;status re=query(1,1,n,l,r);int ans=0;for(int i=0;i<(1<<k);i++) ans=max(ans,re.a[i]+re.a[(1<<k)-i-1]);cout<<ans<<endl;}}return 0;
}
http://www.jsqmd.com/news/100403/

相关文章:

  • Gin框架入门篇001_Gin框架简介
  • 仅1%人掌握的建模技术:R语言金融相关性矩阵稀疏化处理实战
  • App从点击流到会话流,不重构的情况下如何实现?3个实战场景解析
  • 超越传统PLM理念,定义行业新标准:全星研发项目管理APQP软件系统
  • hal!HalpClockInterrupt分析从hal!HalBeginSystemInterrupt到nt!KeUpdateSystemTime到hal!HalEndSystemInterrupt
  • 女性网安职场生存指南:从入门小白到安全领域领导力养成记
  • C语言复习笔记
  • 全星研发项目管理软件系统:超越传统 PLM,赋能汽车部件与芯片半导体高标准研发
  • 前端vue3 web端中实现拖拽功能实现列表排序
  • 揭秘气象预测准确率提升秘诀:3种R语言模型对比分析全公开
  • 【企业级Docker Offload部署必读】:揭秘高并发场景下的云端资源热切换技术
  • 《Ascend C 高级优化:GELU、LayerNorm 实现与算子融合实战》
  • 《深入理解 Ascend C:华为昇腾 AI 处理器的高效编程语言》
  • OSPF综合实验
  • 极端天气频发,我们该如何应对?,基于R语言的气象归因分析全流程解析
  • 【Dify检索优化终极方案】:从结果过滤到重排序的全链路解析
  • 揭秘Dify并行执行机制:如何实现任务处理速度提升300%
  • Gin框架入门篇002_第一个Gin服务
  • 广东省考备考三要素(喻明公考)
  • 基于模型上下文协议(MCP)的可插拔式临床AI工具链Clinical DS研究(下)
  • 【Docker MCP 网关服务注册全解析】:掌握微服务动态注册核心技术
  • 【Dify索引优化终极指南】:构建毫秒级视频帧检索系统的秘密武器
  • (混合检索性能革命):Dify响应时间从3秒到200ms的实践路径
  • Rust Rocket Web 应用项目结构详解(MVC 风格)
  • 打通 C++ 与 Node.js 的跨语言交互通道
  • SpringBoot新手入门:从0到1快速搭建Web应用
  • 提高 CHO 细胞蛋白表达量?Cytiva HyClone 培养基是优选!
  • 2025行业盘点追踪,迈向生产级医疗AI:三大核心实践趋势的落地路径分析
  • 【农业产量预测新突破】:基于R语言的气候影响深度分析与实战模型构建
  • Mac电脑往U盘拷贝文件有同名的“._”开头的文件,怎么避免?