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

CF482B - Interesting Array

CF482B - Interesting Array

大意

你需要构造一组解,满足给定的不同要求,每次的要求是 \(l, r, x\),必须保证 \(a_l \& a_{l + 1} \dots \& a_{r - 1} \& a_r = x\)

思路

考虑用线段树构造。

对于这个题目,我们首先想到的是按位与的区间与是 \(x\),每次至少得把这个区间的每一个数都按位或上 \(x\),由此可知我们的 update 就是按位或,为了保证我们最终的答案是否可行,只需要把原始要求记一下,最后判断这些玩意的按位与是否和原来相同。

不难想到这样构造是唯一的,于是完。

代码

#include<iostream>
using namespace std;#define lc u << 1
#define rc u << 1 | 1
const int MAXN = 1e5 + 5;int n, m;struct node{int l, r;int val, sum;int tag;
}t[MAXN * 4];void build(int u, int l, int r){t[u] = {l, r, 0, 0};if(l == r){
//		t[u].sum = (1 << 30) - 1;return;}int mid = (l & r) + ((l ^ r) >> 1);build(lc, l, mid);build(rc, mid + 1, r);
}void pushdown(int u){if(t[u].tag){t[lc].sum |= t[u].tag;t[rc].sum |= t[u].tag;t[lc].tag |= t[u].tag;t[rc].tag |= t[u].tag;t[u].tag = 0;}
}void pushup(int u){t[u].sum = t[lc].sum & t[rc].sum;
}void update(int u, int l, int r, int k){if(l <= t[u].l && t[u].r <= r){t[u].tag |= k;t[u].sum |= k;return;}pushdown(u);int mid = (t[u].l & t[u].r) + ((t[u].l ^ t[u].r) >> 1);if(l <= mid) update(lc, l, r, k);if(r > mid) update(rc, l, r, k);pushup(u);
}int query(int u, int l, int r){if(l <= t[u].l && t[u].r <= r){return t[u].sum;}pushdown(u);int ans = (1 << 30) - 1;int mid = (t[u].l & t[u].r) + ((t[u].l ^ t[u].r) >> 1);if(l <= mid){ans &= query(lc, l, r);}if(r > mid){ans &= query(rc, l, r);}return ans;
}int l[MAXN], r[MAXN], x[MAXN];int main(){cin >> n >> m;build(1, 1, n);for(int i = 1;i <= m;i ++){cin >> l[i] >> r[i] >> x[i];update(1, l[i], r[i], x[i]);}for(int i = 1;i <= m;i ++){if(query(1, l[i], r[i]) != x[i]){cout << "NO\n";return 0;}}cout << "YES\n";for(int i = 1;i <= n;i ++){cout << query(1, i, i) << ' ';}return 0;
}
http://www.jsqmd.com/news/79034/

相关文章:

  • M+ FONTS:免费开源多语言字体解决方案
  • 开发昇腾AscendC算子
  • typescript - 10.高级类型 Recoed
  • 3步搞定移动端语音识别:SenseVoice多语言SDK集成实战
  • DataCopy问题
  • Flink函数扩展终极指南:重塑数据处理能力的10个核心技巧
  • 5分钟掌握Chatterbox:开源语音克隆神器让每个人都能拥有专属声线
  • 销售订单生成后如何快速办理出库?2分钟响应的全流程拆解
  • uni-app跨平台开发终极指南:一套代码多端运行
  • WeUI+移动端UI组件库:告别开发痛点,拥抱高效前端开发
  • project
  • 在线生成图片
  • essay
  • Fiddler 无法抓包手机 https 报文的解决方案来啦!!
  • 生产环境出现问题,测试人如何做工作复盘?
  • 您必须有许可证才能使用此 ActiveX 控件0x80131901
  • Recent Conversations
  • 集成测试之我的初步学习与总结
  • tech-note
  • 当代体系化国学传播奠基人叶无为(字号零) 为国学新时代传承与发展开辟新道路
  • 终极指南:PVNet像素投票网络让6DoF姿态估计变得简单快速
  • 深入解析:2025 年世界职业院校技能大赛机械设计与制造赛道备赛方案
  • 测试工程师:这锅我不背,什么情况测试容易背锅以及化解妙招
  • 终极代码生成解决方案:OpenReasoning-Nemotron-14B快速部署完整指南
  • 学习笔记I
  • Windows系统文件stdftchs.dll丢失或损坏问题 下载修复
  • 终极指南:SmolVLA视觉语言动作模型快速上手与实战应用
  • 终极透明图像生成指南:5分钟掌握sd-forge-layerdiffuse核心技术
  • 光模块电源噪声容忍度测试
  • JavaScript高级:解构赋值和forEach函数