参考了Yoangh大牛的博客

链接:http://blog.csdn.net/y990041769/article/details/40590953

题意:构建一个有n个元素的序列,满足题中给出的m条约束,即数列要满足第Li个数字到第Ri个数字的&等于Qi,如有满足的序列,输出YES,否则输出NO。

思路:如果某个位置处于不同的区间交内,那么这个位置的数字一定要等于那些区间的Qi的或,这样才能把每一位的1保存下来,处理的时候每读入一条约束,用线段树去更新,读完数据判断是否所有区间都满足约束,若满足,则在线段树内从上至下的更新答案。

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>using namespace std;const int N=1e5+2;
int ans[N];
int ii;struct C
{int l,r,q;
} c[100005];struct Node
{int l,r,s;
} tree[N*4];void build(int l,int r,int root)
{tree[root].l=l;tree[root].r=r;tree[root].s=0;if(l==r)return ;int m=(l+r)>>1;build(l,m,root<<1);build(m+1,r,root<<1|1);
}void update(int l,int r,int c,int root)
{if(tree[root].l==l&&tree[root].r==r){tree[root].s=tree[root].s|c;return ;}int m=(tree[root].l+tree[root].r)>>1;if(r<=m)update(l,r,c,root<<1);else if(l>m)update(l,r,c,root<<1|1);else{update(l,m,c,root<<1);update(m+1,r,c,root<<1|1);}
}int query(int l,int r,int root)
{if(tree[root].l==l&&tree[root].r==r)return tree[root].s;int m=(tree[root].l+tree[root].r)>>1;if(r<=m)return query(l,r,root<<1);else if(l>m)return query(l,r,root<<1|1);elsereturn query(l,m,root<<1)&query(m+1,r,root<<1|1);
}void solve(int root)
{if(root!=1)tree[root].s|=tree[root>>1].s;if(tree[root].l==tree[root].r){ans[ii]=tree[root].s;ii++;return ;}solve(root<<1);solve(root<<1|1);
}int main()
{int n,m;while(scanf("%d%d",&n,&m)!=EOF){build(1,n,1);for(int i=1; i<=m; i++){scanf("%d%d%d",&c[i].l,&c[i].r,&c[i].q);update(c[i].l,c[i].r,c[i].q,1);}int flag=1;for(int i=1; i<=m; i++){if(query(c[i].l,c[i].r,1)!=c[i].q){flag=0;break;}}if(flag){printf("YES\n");ii=1;solve(1);for(int i=1; i<ii; i++){if(i==1)printf("%d",ans[i]);elseprintf(" %d",ans[i]);}printf("\n");}elseprintf("NO\n");}return 0;
}

CF_275_DIV2_D_Interesting Array相关推荐

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

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

  2. php recordarray,Array 数组 - [ php中文手册 ] - 在线原生手册 - php中文网

    用户评论: [#1] florenxe [2015-10-07 18:53:45] //a nice little way to print leap years using array for ($ ...

  3. NumPy — 创建全零、全1、空、arange 数组,array 对象类型,astype 转换数据类型,数组和标量以及数组之间的运算,NumPy 数组共享内存

    NumPy 简介 一个用 python 实现的科学计算包.包括: 1.一个强大的 N 维数组对象 Array : 2.比较成熟的(广播)函数库: 3.用于整合 C/C++ 和 Fortran 代码的工 ...

  4. array.array python yhzf

    关于array: Python 本身没有数组这个说法, 有的就是list和tuple, list就具有其他语言中的数组特性. 至于list和tuple的区别,在于list可以在运行时修改内容和大小,t ...

  5. [JS]请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。

    请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组. 刚开始复习js题还不太习惯 CSDN上看了一个帖子,说是牛客上的标答, ...

  6. hnswlib RuntimeError: Cannot return the results in a contigious 2D array. Probably ef or M is to sma

    1. 问题现象 index = hnswlib.Index(space = '100', dim = 512) index.init_index(max_elements = 100, ef_cons ...

  7. Array 数组去重 总结10方法(7)

    1,常规双循环去重(缺点:循环次数较多) Array.prototype.unique1 = function(){if(this === null){throw new TypeError('&qu ...

  8. ECMAScript——引用数据类型之array

    array 转载于:https://www.cnblogs.com/cataway/p/4967058.html

  9. leetcode:Search in Rotated Sorted Array

    题目要求: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 ...

最新文章

  1. pandas生成新的累加数据列、pandas生成新的累加数据列(数据列中包含NaN的情况)、pandas计算整个dataframe的所有数据列的累加
  2. 转:PHP Liunx 服务安全防范方案
  3. 介绍一下python有趣的库-tqdm
  4. SQL2K数据库开发二十二之索引操作在视图上创建索引
  5. 【labelme】改造labelme
  6. hadoop学习笔记(二):centos7三节点安装hadoop2.7.0
  7. 较简单的字节输入流输出流拷贝文件
  8. 【小白冲冲冲!!!】37. ORBSLAM初始化时为什么要同时初始化H矩阵和F矩阵?
  9. 阅读之大量数据访问机器的架构优化
  10. BZOJ3669[NOI2014] 魔法森林
  11. 美团架构师探秘Java生态系统,介绍JDK、JVM、JEP
  12. 高质量解读《高性能mysql》——第1章 MySQL架构与历史
  13. Linux终端下载百度云,Linux终端使用wget下载百度云资源
  14. pascal 一些常用函数
  15. uniapp开发微信公众号调用微信授权登录
  16. NPN与PNP型传感器的区别
  17. 【安卓Android】VibratorService分析
  18. python学习之路1
  19. W3school导航条实现的两种方法
  20. 高仿小米商城项目,我爱了!

热门文章

  1. 十三、“词短情长书不尽,桃花潭水是我心。”(2021.2.12)
  2. 普211标准三维EE零基础转CS申
  3. 有关数据库的多库查询
  4. bash-shell高级编程--退出和退出状态码
  5. 获取android应用签名证书(打包APK用到的那个文件)的SHA1,MD5,SHA256值
  6. JDBC基础知识复习
  7. 操作系统(三十二)内存的基础常识
  8. pat天梯赛L1-050. 倒数第N个字符串
  9. 分布式入门,怎样用PyTorch实现多GPU分布式训练
  10. Linux 解压后的启动流程分析