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

*题解:P3293 [SCOI2016] 美味

题目链接

解析

看到异或,想到按位处理,这样 \(a + x\) 得看作是一个整体。对于 \(b\) 的第 \(k\) 位,如果其为 \(1\),则我们希望 \(a + x\) 的对应位为 \(0\)。如何让 \(a + x\) 的第 \(k\) 位为 \(0\) 呢?考虑到 \(a + x\) 的更高位已经确定,设当前确定出来的那部分为 \(y\),那么 \(a + x\) 的范围应当为 \([y,y + 2^k)\)

当然,取不取得到就是另一回事了。由上可得此时 \(a\) 的范围应当是 \([y - x,y + 2 ^ k - x)\),所以需要判断区间内是否存在这样的 \(a\),可以用主席树来实现。

\(b\) 的第 \(k\) 位为 \(0\) 的情况同理。

代码

#include <bits/stdc++.h>
#define mid ((1ll * l + r) >> 1)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N = 2e5 + 5,M = (1ll << 31) - 1,L = 19,L2 = 17,mod = 998244353; 
int cnt[N * L],rt[N],ls[N * L],rs[N * L],siz,a[N];
void push_up(int p){cnt[p] = cnt[ls[p]] + cnt[rs[p]];
}
void add(int x,int &y,int l,int r,int k){if(!y) y = ++siz;if(l == r){cnt[y] = cnt[x] + 1;return;}if(k <= mid){rs[y] = rs[x];add(ls[x],ls[y],l,mid,k);}else{ls[y] = ls[x];add(rs[x],rs[y],mid + 1,r,k);}push_up(y);
}
int ask(int x,int y,int l,int r,int L,int R){if(l > R || r < L) return 0;if(l >= L && r <= R){return cnt[y] - cnt[x];}return ask(ls[x],ls[y],l,mid,L,R) + ask(rs[x],rs[y],mid + 1,r,L,R);
}
signed main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
//	freopen("in.txt","r",stdin);
//	freopen("out.txt","w",stdout);int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];add(rt[i - 1],rt[i],0,N - 1,a[i]);}while(m--){int b,x,l,r;cin>>b>>x>>l>>r;int now = 0;for(int i=L;i>=0;i--){int f = b & (1 << i);if(f){int res = ask(rt[r],rt[l - 1],0,N - 1,now - x,now + (1 << i) - 1 - x);if(!res) now |= (1 << i);}else{int res = ask(rt[r],rt[l - 1],0,N - 1,now + (1 << i) - x,now + (1 << i + 1) - 1 - x);if(res) now |= (1 << i);}}cout<<(now ^ b)<<'\n';}return 0;
}
http://www.rkmt.cn/news/1310973.html

相关文章:

  • PUBG雷达系统:5分钟打造你的战场上帝视角
  • 从模型保密到快速仿真:深入聊聊AVL Cruise与Simulink的MATLAB DLL联合仿真到底怎么用
  • 在Nodejs后端服务中集成多模型API实现智能客服
  • NoFences终极指南:如何用免费开源工具彻底告别杂乱桌面
  • 从零构建ChatGPT风格AI对话应用:技术架构与工程实践
  • Hades工具集:模块化渗透测试自动化工作流构建与实战解析
  • 除了综合,DC Shell还能这么用:快速搭建一个RTL/网表可视化调试环境
  • 【EasyX】从零绘制动态时钟:结合时间函数与图形编程
  • Pearcleaner:macOS应用彻底清理终极指南,释放30%隐藏存储空间
  • OpenCV cv2.minAreaRect返回的角度为啥总是负的?彻底搞懂旋转矩形框的坐标顺序与角度计算
  • 如何深度调优显卡性能:NVIDIA Profile Inspector完整配置手册
  • WinRing0深度解析:Windows硬件访问的终极解决方案
  • 一定要建立自己的话题库
  • 网络安全 --- CTF打靶 之 模拟羊了个羊
  • 【深度解析】双三相PMSM宽域调速:从MTPA到深度弱磁的全速域控制策略
  • 2026年造口袋制袋机厂家推荐排行榜:两件式、肛.肠、术后、医院、无纺布造口袋制袋机优质品牌之选! - 资讯速览
  • Oracle数据库自动化运维:基于Shell与SQL*Plus的轻量级工具箱实践
  • WechatDecrypt终极指南:3步快速解密微信聊天记录的完整教程
  • 终极方案:如何彻底解决拯救者笔记本性能与续航的世纪难题
  • AppleRa1n深度解析:iOS 15-16设备激活锁绕过终极指南
  • GPTs商店推荐失效了?揭秘2024年GPTs排名算法突变:基于OpenAI开发者大会泄露文档的权重重构模型解析
  • 保鲜效果好的冰箱评测:海尔麦浪9系磁控全空间保鲜科技深度解析 - 资讯焦点
  • 工业级PCB缺陷检测数据集:DeepPCB完全实战指南
  • Taotoken Token Plan套餐带来的长期成本优势感知
  • 避开这5个坑,你的K210+MaixHub图像识别项目成功率提升90%
  • 无需分区!用VHD/VHDX在Windows中快速搭建双系统测试环境
  • 利用CSS自定义GPTs界面:GPThemes项目实战指南
  • PromptScript:用脚本引擎重构AI提示词开发,实现逻辑与业务解耦
  • 睿创燧石EX100 SE官宣上市,树立百元入门热像仪新标杆! - 资讯速览
  • Win11桌面图标突然锁死?别急着重装,试试这个隐藏的组策略修复法