当前位置: 首页 > 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开源平台的使用 -- 配置文件
  • 时间复杂度分析经典问题——最大子序列和
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • C# 免费离线人脸识别 2.0 Demo
  • co模块的前端实现
  • ES6系统学习----从Apollo Client看解构赋值
  • Java编程基础24——递归练习
  • js算法-归并排序(merge_sort)
  • tensorflow学习笔记3——MNIST应用篇
  • vue-loader 源码解析系列之 selector
  • Vue--数据传输
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 闭包--闭包作用之保存(一)
  • 从重复到重用
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 开发基于以太坊智能合约的DApp
  • 利用jquery编写加法运算验证码
  • 系统认识JavaScript正则表达式
  • 小程序 setData 学问多
  • 一份游戏开发学习路线
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​人工智能书单(数学基础篇)
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (Java)【深基9.例1】选举学生会
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)计算机毕业设计大学生兼职系统
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • /etc/sudoer文件配置简析
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解