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

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

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

#include<bits/stdc++.h>
using namespace std;
#define MAXN 1000000+10
struct tree{int sum,tag;}tr[MAXN*];
int n,m,l[MAXN],r[MAXN],q[MAXN];
void pushup(int k){tr[k].sum=tr[k<<].sum&tr[k<<|].sum;}
void pushdown(int k){
if(!tr[k].tag)return;
tr[k<<].sum|=tr[k].tag;
tr[k<<|].sum|=tr[k].tag;
tr[k<<].tag|=tr[k].tag;
tr[k<<|].tag|=tr[k].tag;
tr[k].tag=;
}
void build(int k,int l,int r){
tr[k].tag=;
if(l==r){
tr[k].sum=;
return;
}
int mid=(l+r)>>;
build(k<<,l,mid);
build(k<<|,mid+,r);
pushup(k);
}
void update(int k,int l,int r,int L,int R,int t){
if(l>=L&&r<=R){
tr[k].sum|=t;
tr[k].tag|=t;
return;
}
pushdown(k);
int mid=(l+r)>>;
if(R<=mid)update(k<<,l,mid,L,R,t);
else if(L>mid)update(k<<|,mid+,r,L,R,t);
else update(k<<,l,mid,L,R,t),update(k<<|,mid+,r,L,R,t);
pushup(k);
}
int query(int k,int l,int r,int L,int R){
if(l>=L&&r<=R)return tr[k].sum;
pushdown(k);
int mid=(l+r)>>;
if(R<=mid)return query(k<<,l,mid,L,R);
else if(L>mid)return query(k<<|,mid+,r,L,R);
else return query(k<<,l,mid,L,R)&query(k<<|,mid+,r,L,R);
pushup(k);
}
int main(){
//freopen("data.in","r",stdin);
scanf("%d%d",&n,&m);
build(,,n);
for(int i=;i<=m;i++){
scanf("%d%d%d",&l[i],&r[i],&q[i]);
update(,,n,l[i],r[i],q[i]);
}
for(int i=;i<=m;i++){
int t=query(,,n,l[i],r[i]);
if(t!=q[i]){
puts("NO");
return ;
}
}
printf("YES\n");
for(int i=;i<=n;i++)printf("%d ",query(,,n,i,i));
return ;
}

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. c语言的,三个工具可以使编译器生成性能更佳的代码。

    内联函数声明inline 函数有时可以非常短.短函数的每次调用可以用实现该函数功能的内联代码替代,以提高执行性能.意味着不需要给函数传递或返回一个值,要让编译器采用这种技术,可以把短函数指定为inli ...

  2. where id in用 order by field 保持排序

    转载自http://blog.linuxphp.org/archives/1588/ 先看下mysql的默认排序 select id from article where id in(63261,63 ...

  3. 爆炸快求1~n有多少素数

    这个求一千亿以内的素数大约用6780ms #include <stdio.h> #include <iostream> #include <string.h> #i ...

  4. PHP基础入门(二)【PHP函数基础】

    PHP基础入门(二)--函数基础 了解 PHP基础入门详解(一) 后,给大家分享一下PHP的函数基础. 这部分主要讲的就是: 函数的声明与使用.PHP中变量的作用域.静态变量.函数的参数传递.变量函数 ...

  5. shell命令输入输出重定向

    Linux命令的执行过程 首先是输入:stdin输入可以从键盘,也可以从文件得到 命令执行完成:把成功结果输出到屏幕,stout默认是屏幕 命令执行有错误:把错误也输出到屏幕上面,stderr默认也是 ...

  6. JAVAscript学习笔记 js条件语句 第三节 (原创) 参考js使用表 (2017-09-14 15:55)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Python通过跳板机链接MySQL的一种方法

  8. Python 列表浅拷贝与深拷贝

    浅拷贝 shallow copy 和深拷贝 deep copy list.copy() 浅拷贝:复制此列表(只复制一层,不会复制深层对象) 等同于 L[:] 举例: 浅拷贝: a = [1.1, 2. ...

  9. 【APP问题定位(一)】夜神模拟器安装及问题

    本文较少下夜神模拟器的使用,包括了夜神安装,APK安装,开发者选项打开. 安装夜神模拟器 到    夜神模拟器     网站自行下载安装文件,双击exe文件安装,选择"自定义安装" ...

  10. [转载] OAuth2.0认证和授权原理

    转载自http://www.tuicool.com/articles/qqeuE3 什么是OAuth授权? 一.什么是OAuth协议 OAuth(开放授权)是一个开放标准,允许第三方网站在用户授权的前 ...