题目大意:构造一个序列$S$,有$m$条限制,每条为$l\;r\;q$,表示$\&_{i=l}^r S_i=q$

题解:每条限制就把$[l,r]$内的数或上$q$,最后判断就行了

卡点:我又写了一课$O(n^2\log_2n)$的线段树。。。

C++ Code:

#include <cstdio>
#include <cstdlib>
#define maxn 100010
const int inf = (1 << 30) - 1;
namespace SgT {int n;int L, R, q;int V[maxn << 2], tg[maxn << 2];inline void pushdown(int rt) {int &x = tg[rt];V[rt << 1] |= x;V[rt << 1 | 1] |= x;tg[rt << 1] |= x;tg[rt << 1 | 1] |= x;x = 0;}void modify(int rt, int l, int r) {if (L <= l && R >= r) {V[rt] |= q;tg[rt] |= q;return ;}if (tg[rt]) pushdown(rt);int mid = l + r >> 1;if (L <= mid) modify(rt << 1, l, mid);if (R > mid) modify(rt << 1 | 1, mid + 1, r);V[rt] = V[rt << 1] & V[rt << 1 | 1];}inline void add(int ll, int rr, int qq) {L = ll, R = rr, q = qq;modify(1, 1, n);}int query(int rt, int l, int r) {if (L <= l && R >= r) return V[rt];if (tg[rt]) pushdown(rt);int mid = l + r >> 1, ans = inf;if (L <= mid) ans = query(rt << 1, l, mid);if (R > mid) ans &= query(rt << 1 | 1, mid + 1, r);return ans;}inline int ask(int ll, int rr) {L = ll, R = rr;return query(1, 1, n);}
}
using SgT::add;
using SgT::ask;
int n, m;
int l[maxn], r[maxn], q[maxn];
int main() {scanf("%d%d", &n, &m); SgT::n = n;for (int i = 1; i <= m; i++) {scanf("%d%d%d", l + i, r + i, q + i);add(l[i], r[i], q[i]);}for (int i = 1; i <= m; i++) {if (ask(l[i], r[i]) != q[i]) {puts("NO");exit(0);}}puts("YES");for (int i = 1; i < n; i++) printf("%d ", ask(i, i));printf("%d\n", ask(n, n));return 0;
}

  

转载于:https://www.cnblogs.com/Memory-of-winter/p/9753778.html

[CF482B]Interesting Array相关推荐

  1. Interesting Array CodeForces - 483D(思维+线段树)

    We'll call an array of n non-negative integers a[1], a[2], -, a[n] interesting, if it meets m constr ...

  2. Interesting Array

    解法一: 首先想到通过位运算的性质来做这道题,将q[i]转为二进制来做. 可以分类讨论: 1.当q[i]的第j位为1时,就说明a[l[i]]~a[r[i]]的第j位上都是1 2.反过来,当q[i]的第 ...

  3. javascript跳跃式前进(3) - 跳入JSON

    前言 JSON崛起不是意外,是顺应时代;相当简洁小巧的书写模式及阅读方式; 基础 看这篇文章: JSON知识点汇总_W3SCHOOL 初步进阶 早期的解析仅仅实用eval() ,可是这货太easy给注 ...

  4. unity3d 可视化编程_R编程系列:R中的3D可视化

    unity3d 可视化编程 In the last blog, we have learned how to create "Dynamic Maps Using ggplot2" ...

  5. Hossam and Combinatorics

    给定一个长度为n的序列a,要求计算一共有多少对(i,j)使得abs(a[i]-a[j])=序列a中最大的abs(a[x]-a[y]),其中i!=j,x!=y; Hossam woke up bored ...

  6. 线段树详解 (原理,实现与应用)

    线段树详解 By 岩之痕 目录: 一:综述 二:原理 三:递归实现 四:非递归原理 五:非递归实现 六:线段树解题模型 七:扫描线 八:可持久化 (主席树) 九:练习题 一:综述 假设有编号从1到n的 ...

  7. 【转载】线段树题目2

    1.hdu1166 敌兵布阵 更新节点,区间求和. 2.hdu1754 I Hate It 更新节点,区间最值. . 3.hdu1698 Just a Hook 成段更新,总区间求和. . 4.hdu ...

  8. 老男孩上海校区Python面试题

    python面试题 第一章:python基础 数据类型: 1 字典: 1.1 现有字典 dict={'a':24,'g':52,'i':12,'k':33}请按字典中的 value 值进行排序? 1. ...

  9. How to Convert Array to ArrayList in Java?

    2019独角兽企业重金招聘Python工程师标准>>> This article analyzes answers for a top-voted questions on Stac ...

最新文章

  1. 制定和实施网络安全事件响应计划(1)
  2. 壁布接缝压条_墙布压条样板
  3. 优化C代码常用的几招
  4. asp.net中page对象生命周期和各事件执行顺序
  5. 睡前刷8分钟手机,身体兴奋1小时
  6. swal如何加入html语言,Sweet Alert弹窗点击确定后执行页面跳转等操作
  7. 使用JDK自带的VisualVM进行Java程序的性能分析
  8. 巧用异或运算符(洛谷P1161题题解,Java语言描述)
  9. 加密 数字_数字卢布不会具有BTC这样的加密资产的优势
  10. 多租户数据架构以及hibernate支持(Multi-TenantDataArchitecture)
  11. vue更新路由router-view复用组件内容不刷新
  12. 星型和全连网状MGRE、OSPF综合实验(二)
  13. 北邮C++——破解简单密码
  14. 如何在PB数据窗口中设置数据窗口的更新属性
  15. npm install很慢(奇葩)解决方法
  16. Spring中bean的scop
  17. 全体起立!广州大学数据库综合设计实验
  18. 苏宁易购按关键字搜索suning商品 API 返回值说明
  19. 做人要厚道--只针对富|士|康进行批判是掩耳盗铃的把戏-之一
  20. Markdown 公式编号及引用

热门文章

  1. css3 3d变换和动画——回顾
  2. 纯css写单选框和复选框的样式和功能
  3. input子系统分析(转)
  4. 比较MongoDB在公有云上的性能:AWS、Azure和Digital Ocean
  5. TBox Library
  6. c# 线程间操作无效: 从不是创建控件“”的线程访问它,用托管来解决
  7. $(window).load(function() {})和$(document).ready(function(){})的区别
  8. 阿里云数据库POLARDB技术沙龙火热报名中,李飞飞,曹伟 众大神齐到场,200个席位先到先得!...
  9. SQL Server 行转列,列转行
  10. iOS自动布局框架-Masonry详解