Codeforces 482B Interesting Array(线段树)
题目链接:Codeforces 482B Interesting Array
题目大意:给定一个长度为N的数组,如今有M个限制,每一个限制有l,r,q,表示从a[l]~a[r]取且后的数一定为q,问是
否有满足的数列。
解题思路:线段树维护。每条限制等于是对l~r之间的数或上q(取且的性质,对应二进制位一定为1)。那么处理全然部的
限制。在进行查询。查询相应每一个l~r之间的数取且是否还等于q。所以用线段树维护取且和。改动为或操作。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 1e5 + 5;
const int INF = (1<<30)-1;
#define lson(x) ((x)<<1)
#define rson(x) (((x)<<1)|1)
int lc[maxn << 2], rc[maxn << 2], set[maxn << 2], val[maxn << 2];
inline void maintain (int u, int w) {
val[u] |= w;
set[u] |= w;
}
inline void pushup(int u) {
val[u] = val[lson(u)] & val[rson(u)];
}
inline void pushdown(int u) {
if (set[u]) {
maintain(lson(u), set[u]);
maintain(rson(u), set[u]);
set[u] = 0;
}
}
void build (int u, int l, int r) {
lc[u] = l;
rc[u] = r;
set[u] = val[u] = 0;
if (l == r)
return;
int mid = (lc[u] + rc[u]) >> 1;
build(lson(u), l, mid);
build(rson(u), mid + 1, r);
pushup(u);
}
void modify(int u, int l, int r, int w) {
if (l <= lc[u] && rc[u] <= r) {
maintain(u, w);
return;
}
pushdown(u);
int mid = (lc[u] + rc[u]) >> 1;
if (l <= mid)
modify(lson(u), l, r, w);
if (r > mid)
modify(rson(u), l, r, w);
pushup(u);
}
int query(int u, int l, int r) {
if (l <= lc[u] && rc[u] <= r)
return val[u];
pushdown(u);
int mid = (lc[u] + rc[u]) >> 1, ret = INF;
if (l <= mid)
ret &= query(lson(u), l, r);
if (r > mid)
ret &= query(rson(u), l, r);
pushup(u);
return ret;
}
int N, M, L[maxn], R[maxn], Q[maxn];
bool judge() {
for (int i = 0; i < M; i++)
if (query(1, L[i], R[i]) != Q[i])
return true;
printf("YES\n");
for (int i = 1; i <= N; i++)
printf("%d%c", query(1, i, i), i == N ?
'\n' : ' ');
return false;
}
int main () {
scanf("%d%d", &N, &M);
build(1, 1, N);
for (int i = 0; i < M; i++) {
scanf("%d%d%d", &L[i], &R[i], &Q[i]);
modify(1, L[i], R[i], Q[i]);
}
if (judge())
printf("NO\n");
return 0;
}
Codeforces 482B Interesting Array(线段树)的更多相关文章
- 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 Round #275 Div.1 B Interesting Array --线段树
题意: 构造一个序列,满足m个形如:[l,r,c] 的条件. [l,r,c]表示[l,r]中的元素按位与(&)的和为c. 解法: 线段树维护,sum[rt]表示要满足到现在为止的条件时该子树的 ...
- Codeforces 482B Interesting Array
题意:构造一个长度为n的序列,使其满足m个形式如下如下约束:a[l]&a[l+1]&a[l+2]&....&a[r]=q 从Dalao的博客上看到这题,决定去水水.做法 ...
- [Codeforces 266E]More Queries to Array...(线段树+二项式定理)
[Codeforces 266E]More Queries to Array...(线段树+二项式定理) 题面 维护一个长度为\(n\)的序列\(a\),\(m\)个操作 区间赋值为\(x\) 查询\ ...
- Buses and People CodeForces 160E 三维偏序+线段树
Buses and People CodeForces 160E 三维偏序+线段树 题意 给定 N 个三元组 (a,b,c),现有 M 个询问,每个询问给定一个三元组 (a',b',c'),求满足 a ...
- CodeForces 877E DFS序+线段树
CodeForces 877E DFS序+线段树 题意 就是树上有n个点,然后每个点都有一盏灯,给出初始的状态,1表示亮,0表示不亮,然后有两种操作,第一种是get x,表示你需要输出x的子树和x本身 ...
- [Codeforces 1197E]Culture Code(线段树优化建图+DAG上最短路)
[Codeforces 1197E]Culture Code(线段树优化建图+DAG上最短路) 题面 有n个空心物品,每个物品有外部体积\(out_i\)和内部体积\(in_i\),如果\(in_i& ...
- [Codeforces 1199D]Welfare State(线段树)
[Codeforces 1199D]Welfare State(线段树) 题面 给出一个长度为n的序列,有q次操作,操作有2种 1.单点修改,把\(a_x\)修改成y 2.区间修改,把序列中值< ...
随机推荐
- 矩阵经典题目六:poj 3070 Fibonacci
http://poj.org/problem?id=3070 按已构造好的矩阵,那么该矩阵的n次方的右上角的数便是f[n]. #include <stdio.h> #include < ...
- Lua多重继承
http://blog.csdn.net/ssihc0/article/details/7742421 代码收藏了,以后用的到 --多重继承 local function search(k,plist ...
- HDU 2030 统计汉字
BestCoder官方群:385386683 欢迎加入~ 寻人启事:2014级新生看过来! 汉字统计 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- hive大数据倾斜总结
在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显.主要是因为在Job完成后的所得到的 Counters是整个Job的总和,优化是基于这些Counters得出的 ...
- android stagefright awesomeplayer 分析
主要调用awesomeplay.cpp的函数来实现音视频等功能,可以说是对awesomeplay.cpp的封装,进一步抽象,然后提供给上层调用,主要的调用者是MediaPlayerService.cp ...
- 不同SQL Server数据库之间的跨数据库查询
--不同SQL Server数据库之间的跨数据库查询 EXEC sp_addlinkedserver @server=N'OldDatabase', --自己定义别名 @srvproduct=N'', ...
- 使用DBCC CHECKIDENT重置自增标识
原来ID=8的记录删除后, 下一个Insert记录为9 当插入ID=10的记录后, 使用 ) 当再次Insert记录, 就会是ID为8. 不过以上不是真实的使用场景, 以上情况应该插入包含ID的记录就 ...
- ASP.NET 开发框架汇总
先简单记录一下,以后慢慢添加 1.ASP.NET Aries 2.ASP.NET DevExpress
- Mongoose的模糊查询
var Commidity = require("./Model/commiditiesModel"); function search(response,request,key) ...
- intellj idea maven 无效的目标发行版: 1.8
File ->settings->maven->runner->jre -> jdk1.8