当前位置: 首页 > news >正文

[CF482B]Interesting Array

题目大意:构造一个序列$S$,有$m$条限制,每条为$l\;r\;q$,表示$\&_{i=l}^r S_i=q$

题解:每条限制就把$[l,r]$内的数或上$q$,最后判断就行了

卡点:我又写了一课$O(n^2\log_2n)$的线段树。。。

 

C++ Code:

#include <cstdio>
#include <cstdlib>
#define maxn 100010
const int inf = (1 << 30) - 1;
namespace SgT {
	int n;
	int L, R, q;
	int V[maxn << 2], tg[maxn << 2];
	inline void pushdown(int rt) {
		int &x = tg[rt];
		V[rt << 1] |= x;
		V[rt << 1 | 1] |= x;
		tg[rt << 1] |= x;
		tg[rt << 1 | 1] |= x;
		x = 0;
	}
	void modify(int rt, int l, int r) {
		if (L <= l && R >= r) {
			V[rt] |= q;
			tg[rt] |= q;
			return ;
		}
		if (tg[rt]) pushdown(rt);
		int mid = l + r >> 1;
		if (L <= mid) modify(rt << 1, l, mid);
		if (R > mid) modify(rt << 1 | 1, mid + 1, r);
		V[rt] = V[rt << 1] & V[rt << 1 | 1];
	}
	inline void add(int ll, int rr, int qq) {
		L = ll, R = rr, q = qq;
		modify(1, 1, n);
	}
	int query(int rt, int l, int r) {
		if (L <= l && R >= r) return V[rt];
		if (tg[rt]) pushdown(rt);
		int mid = l + r >> 1, ans = inf;
		if (L <= mid) ans = query(rt << 1, l, mid);
		if (R > mid) ans &= query(rt << 1 | 1, mid + 1, r);
		return ans;
	}
	inline int ask(int ll, int rr) {
		L = ll, R = rr;
		return query(1, 1, n);
	}
}
using SgT::add;
using SgT::ask;
int n, m;
int l[maxn], r[maxn], q[maxn];
int main() {
	scanf("%d%d", &n, &m); SgT::n = n;
	for (int i = 1; i <= m; i++) {
		scanf("%d%d%d", l + i, r + i, q + i);
		add(l[i], r[i], q[i]);
	}
	for (int i = 1; i <= m; i++) {
		if (ask(l[i], r[i]) != q[i]) {
			puts("NO");
			exit(0);
		}
	}
	puts("YES");
	for (int i = 1; i < n; i++) printf("%d ", ask(i, i));
	printf("%d\n", ask(n, n));
	return 0;
}

  

转载于:https://www.cnblogs.com/Memory-of-winter/p/9753778.html

相关文章:

  • linux连接oracle数据
  • [微信小程序] 微信小程序下拉滚动选择器picker绑定数据的两种方式
  • bzoj3991 LCA + set
  • php面相对象基本概念,基本形式,传值
  • 【Linux】- ps 命令
  • 10-序列化
  • EM算法
  • 《弹球学成语》需求分析报告
  • IDEA控制台问题:java lang OutOfMemoryError:PermGen space
  • c语言打印空白星号矩形
  • 关于Qt中窗口的坐标
  • Django将默认的SQLite更换为MySQL
  • Django的contenttypes
  • 离散傅里叶级数DFS
  • NiftyNet开源平台的使用 -- 配置文件
  • python3.6+scrapy+mysql 爬虫实战
  • [NodeJS] 关于Buffer
  • echarts花样作死的坑
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • laravel with 查询列表限制条数
  • Linux快速复制或删除大量小文件
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • React-生命周期杂记
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 聊聊redis的数据结构的应用
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 使用agvtool更改app version/build
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 微信公众号开发小记——5.python微信红包
  • 我的zsh配置, 2019最新方案
  • 移动端解决方案学习记录
  • 《天龙八部3D》Unity技术方案揭秘
  • 1.Ext JS 建立web开发工程
  • # Java NIO(一)FileChannel
  • #include<初见C语言之指针(5)>
  • #include到底该写在哪
  • ${ }的特别功能
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (TOJ2804)Even? Odd?
  • (笔试题)分解质因式
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (附源码)计算机毕业设计大学生兼职系统
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • (转载)虚函数剖析
  • .NET 8.0 中有哪些新的变化?
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .net 程序发生了一个不可捕获的异常
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • [2669]2-2 Time类的定义
  • [AAuto]给百宝箱增加娱乐功能
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [bug总结]: Feign调用GET请求找不到请求体实体类
  • [BZOJ1060][ZJOI2007]时态同步 树形dp