Codeforces 482B Interesting Array
题意:构造一个长度为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的更多相关文章
- Codeforces 482B Interesting Array(线段树)
题目链接:Codeforces 482B Interesting Array 题目大意:给定一个长度为N的数组,如今有M个限制,每一个限制有l,r,q,表示从a[l]~a[r]取且后的数一定为q,问是 ...
- codeforces 482B. Interesting Array【线段树区间更新】
题目:codeforces 482B. Interesting Array 题意:给你一个值n和m中操作,每种操作就是三个数 l ,r,val. 就是区间l---r上的与的值为val,最后问你原来的数 ...
- Codeforces 482B Interesting Array(线段树区间更新)
题目链接 Interesting Array 区间更新.然后对于每一个约数重新求一遍区间的&值,不符合就跳出. #include <bits/stdc++.h> using nam ...
- Codeforces E. Interesting Array(线段树)
题目描述: D. Interesting Arraytime limit per test1 secondmemory limit per test256 megabytesinputstandard ...
- Codeforces 1077C Good Array 坑 C
Codeforces 1077C Good Array https://vjudge.net/problem/CodeForces-1077C 题目: Let's call an array good ...
- codeforces 407C Curious Array
codeforces 407C Curious Array UPD: 我觉得这个做法比较好理解啊 参考题解:https://www.cnblogs.com/ChopsticksAN/p/4908377 ...
- codeforces 797 E. Array Queries【dp,暴力】
题目链接:codeforces 797 E. Array Queries 题意:给你一个长度为n的数组a,和q个询问,每次询问为(p,k),相应的把p转换为p+a[p]+k,直到p > n为 ...
- B. Interesting Array(线段树)
B. Interesting Array time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces Round #275 Div.1 B Interesting Array --线段树
题意: 构造一个序列,满足m个形如:[l,r,c] 的条件. [l,r,c]表示[l,r]中的元素按位与(&)的和为c. 解法: 线段树维护,sum[rt]表示要满足到现在为止的条件时该子树的 ...
随机推荐
- 记录下 Markdown 语法
github上常用markdown语法:Mastering Markdown 目录 0. 目录 1. 锚点 2.标题 3.超链接 3.1.行内式 3.2.自动链接 4.列表 4.1.有序列表 4.2. ...
- 实用 .htaccess 用法大全【转载】
转载:http://www.techug.com/htaccess-snippets 这里收集的是各种实用的 .htaccess 代码片段,你能想到的用法几乎全在这里. 免责声明: 虽然将这些代码片段 ...
- "use strict"详解
参考:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html 目的: 消除JavaScript语法的一些不合理.不严谨之处 ...
- 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现
实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP ...
- SEO内链操作的技巧大家又知道多少
关于一个优质的网站而言,一套优质的内部优化链接体系是必不可少的,简略来说杰出的内链体系能让网站页面之前彼此传递权重,协助搜索引擎快速辨认网站内容的中心,可是SEO内链操作的技巧我们又知道多少?下面齐鲁 ...
- 用C#操作IIS创建虚拟目录和网站
#region CreateWebsite 添加网站 public string CreateWebSite(string serverID, string serverComment, string ...
- Visual Studio 2017开发环境的安装
Visual Studio 2017是微软为了配合.NET战略推出的IDE开发环境,同时也是目前开发C#程序最新的工具,本节以Visual Studio 2017社区版的安装为例讲解具体的安装步骤. ...
- [转载] 文件锁(Filelock)与锁定映射文件部分内容
转载自http://jiangzhengjun.iteye.com/blog/517677 文件锁 JDK 1.4引入了文件加锁机制,允许我们同步访问一个共享文件,不过,竞争同一文件的两个线程有可能在 ...
- Python之re模块(结合具体业务)
1.判断数据库名是否合法 import re dbname = "test_" result = re.match("[a-zA-Z_0-9]{1,}$",db ...
- Python字符编码详解(转)
http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html 在没有reload(sys)之前调用sys.setdefaultencoding ...