当前位置: 首页 > 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.zskr.cn/news/111132.html

相关文章:

  • Gin框架入门篇001_Gin框架简介
  • hal!HalpClockInterrupt分析从hal!HalBeginSystemInterrupt到nt!KeUpdateSystemTime到hal!HalEndSystemInterrupt
  • Gin框架入门篇002_第一个Gin服务
  • 【Dify检索优化终极方案】:从结果过滤到重排序的全链路解析
  • 基于模型上下文协议(MCP)的可插拔式临床AI工具链Clinical DS研究(下)
  • 【Dify索引优化终极指南】:构建毫秒级视频帧检索系统的秘密武器
  • Mac电脑往U盘拷贝文件有同名的“._”开头的文件,怎么避免?
  • 私有化Dify端口配置难题破解(资深架构师亲授配置逻辑)
  • 为什么顶级投行都在用R做风险模拟?深度解析蒙特卡洛方法的五大优势
  • 数据筛选助手
  • 【DevSecOps必修课】:基于Docker Scout的5阶段漏洞修复体系构建
  • astmd4169、astm d4169运输包装测试系统有多少测试内容
  • Docker Compose中Agent服务扩展的5种高级模式(架构师私藏方案)
  • 回滚莫队 学习笔记 - -Graphic
  • 揭秘Docker Compose中的Agent健康检测机制:如何避免服务假死?
  • OpenAI聘请谷歌高管Albert Lee担任企业发展副总裁
  • Docker MCP 网关负载均衡调优案例实录(99%工程师忽略的关键参数)
  • 背包DP
  • yolov5实现游戏图像识别与后续辅助功能
  • 抖音代运营服务商-官方百科
  • 使用LabelImg工具标注数据(游戏辅助脚本开发)
  • 论面向服务的体系结构在系统集成中的应用
  • 30亿参数小模型如何媲美千亿级大模型?Nanbeige4-3B的技术突破与实践指南
  • 想提升Agent集成效率?Dify元数据定义必须搞懂的5个技术细节
  • 科研少走弯路:智慧芽新药情报库到底值不值?
  • 特长生 VS 全科生:AI与AGI的本质区别,一张文说清
  • COMSOL多物理场下的锂枝晶模型:单枝晶定向生长分析及文献参考
  • wordpress原生主题二次开发常用到的一些知识点
  • 在ubuntu中下载yolo
  • ChatID 批量同步:详细解析如何通过“获取客户群列表”API 接口全量同步群聊 ID