题意:构造一个长度为n的序列,使其满足m个形式如下如下约束:a[l]&a[l+1]&a[l+2]&....&a[r]=q

从Dalao的博客上看到这题,决定去水水。做法比较显然,就是做一些区间or之后判断一下之前的条件是否满足。用线段树维护即可。

不出意外,我的线段树又调爆了,因为我把<<打成了>>。。。。

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define MAXN 1000000+10
  4. struct tree{int sum,tag;}tr[MAXN*];
  5. int n,m,l[MAXN],r[MAXN],q[MAXN];
  6. void pushup(int k){tr[k].sum=tr[k<<].sum&tr[k<<|].sum;}
  7. void pushdown(int k){
  8. if(!tr[k].tag)return;
  9. tr[k<<].sum|=tr[k].tag;
  10. tr[k<<|].sum|=tr[k].tag;
  11. tr[k<<].tag|=tr[k].tag;
  12. tr[k<<|].tag|=tr[k].tag;
  13. tr[k].tag=;
  14. }
  15. void build(int k,int l,int r){
  16. tr[k].tag=;
  17. if(l==r){
  18. tr[k].sum=;
  19. return;
  20. }
  21. int mid=(l+r)>>;
  22. build(k<<,l,mid);
  23. build(k<<|,mid+,r);
  24. pushup(k);
  25. }
  26. void update(int k,int l,int r,int L,int R,int t){
  27. if(l>=L&&r<=R){
  28. tr[k].sum|=t;
  29. tr[k].tag|=t;
  30. return;
  31. }
  32. pushdown(k);
  33. int mid=(l+r)>>;
  34. if(R<=mid)update(k<<,l,mid,L,R,t);
  35. else if(L>mid)update(k<<|,mid+,r,L,R,t);
  36. else update(k<<,l,mid,L,R,t),update(k<<|,mid+,r,L,R,t);
  37. pushup(k);
  38. }
  39. int query(int k,int l,int r,int L,int R){
  40. if(l>=L&&r<=R)return tr[k].sum;
  41. pushdown(k);
  42. int mid=(l+r)>>;
  43. if(R<=mid)return query(k<<,l,mid,L,R);
  44. else if(L>mid)return query(k<<|,mid+,r,L,R);
  45. else return query(k<<,l,mid,L,R)&query(k<<|,mid+,r,L,R);
  46. pushup(k);
  47. }
  48. int main(){
  49. //freopen("data.in","r",stdin);
  50. scanf("%d%d",&n,&m);
  51. build(,,n);
  52. for(int i=;i<=m;i++){
  53. scanf("%d%d%d",&l[i],&r[i],&q[i]);
  54. update(,,n,l[i],r[i],q[i]);
  55. }
  56. for(int i=;i<=m;i++){
  57. int t=query(,,n,l[i],r[i]);
  58. if(t!=q[i]){
  59. puts("NO");
  60. return ;
  61. }
  62. }
  63. printf("YES\n");
  64. for(int i=;i<=n;i++)printf("%d ",query(,,n,i,i));
  65. return ;
  66. }

Codeforces 482B Interesting Array的更多相关文章

  1. Codeforces 482B Interesting Array(线段树)

    题目链接:Codeforces 482B Interesting Array 题目大意:给定一个长度为N的数组,如今有M个限制,每一个限制有l,r,q,表示从a[l]~a[r]取且后的数一定为q,问是 ...

  2. codeforces 482B. Interesting Array【线段树区间更新】

    题目:codeforces 482B. Interesting Array 题意:给你一个值n和m中操作,每种操作就是三个数 l ,r,val. 就是区间l---r上的与的值为val,最后问你原来的数 ...

  3. Codeforces 482B Interesting Array(线段树区间更新)

    题目链接 Interesting Array 区间更新.然后对于每一个约数重新求一遍区间的&值,不符合就跳出. #include <bits/stdc++.h> using nam ...

  4. Codeforces E. Interesting Array(线段树)

    题目描述: D. Interesting Arraytime limit per test1 secondmemory limit per test256 megabytesinputstandard ...

  5. Codeforces 1077C Good Array 坑 C

    Codeforces 1077C Good Array https://vjudge.net/problem/CodeForces-1077C 题目: Let's call an array good ...

  6. codeforces 407C Curious Array

    codeforces 407C Curious Array UPD: 我觉得这个做法比较好理解啊 参考题解:https://www.cnblogs.com/ChopsticksAN/p/4908377 ...

  7. codeforces 797 E. Array Queries【dp,暴力】

    题目链接:codeforces 797 E. Array Queries   题意:给你一个长度为n的数组a,和q个询问,每次询问为(p,k),相应的把p转换为p+a[p]+k,直到p > n为 ...

  8. B. Interesting Array(线段树)

    B. Interesting Array time limit per test 1 second memory limit per test 256 megabytes input standard ...

  9. Codeforces Round #275 Div.1 B Interesting Array --线段树

    题意: 构造一个序列,满足m个形如:[l,r,c] 的条件. [l,r,c]表示[l,r]中的元素按位与(&)的和为c. 解法: 线段树维护,sum[rt]表示要满足到现在为止的条件时该子树的 ...

随机推荐

  1. 记录下 Markdown 语法

    github上常用markdown语法:Mastering Markdown 目录 0. 目录 1. 锚点 2.标题 3.超链接 3.1.行内式 3.2.自动链接 4.列表 4.1.有序列表 4.2. ...

  2. 实用 .htaccess 用法大全【转载】

    转载:http://www.techug.com/htaccess-snippets 这里收集的是各种实用的 .htaccess 代码片段,你能想到的用法几乎全在这里. 免责声明: 虽然将这些代码片段 ...

  3. "use strict"详解

    参考:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html 目的: 消除JavaScript语法的一些不合理.不严谨之处 ...

  4. 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现

    实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP ...

  5. SEO内链操作的技巧大家又知道多少

    关于一个优质的网站而言,一套优质的内部优化链接体系是必不可少的,简略来说杰出的内链体系能让网站页面之前彼此传递权重,协助搜索引擎快速辨认网站内容的中心,可是SEO内链操作的技巧我们又知道多少?下面齐鲁 ...

  6. 用C#操作IIS创建虚拟目录和网站

    #region CreateWebsite 添加网站 public string CreateWebSite(string serverID, string serverComment, string ...

  7. Visual Studio 2017开发环境的安装

    Visual Studio 2017是微软为了配合.NET战略推出的IDE开发环境,同时也是目前开发C#程序最新的工具,本节以Visual Studio 2017社区版的安装为例讲解具体的安装步骤. ...

  8. [转载] 文件锁(Filelock)与锁定映射文件部分内容

    转载自http://jiangzhengjun.iteye.com/blog/517677 文件锁 JDK 1.4引入了文件加锁机制,允许我们同步访问一个共享文件,不过,竞争同一文件的两个线程有可能在 ...

  9. Python之re模块(结合具体业务)

    1.判断数据库名是否合法 import re dbname = "test_" result = re.match("[a-zA-Z_0-9]{1,}$",db ...

  10. Python字符编码详解(转)

    http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html 在没有reload(sys)之前调用sys.setdefaultencoding ...