POJ 2777 - Count Color(线段树区间更新+状态压缩)

题目链接 https://cn.vjudge.net/problem/POJ-2777

【题意】
有一个长度为 LLL 的区间 [1,L][1,L][1,L] ,有 TTT 种颜色可以涂,有 QQQ 次操作,操作分两种
C A B CC \ A \ B \ CC A B C 把区间 [A,B][A,B][A,B] 涂成第 CCC 种颜色
P A BP \ A \ BP A B 查询区间 [A,B][A,B][A,B] 有多少种不同的颜色
初始全部为第 111 种颜色(L,Q&lt;=105,T&lt;=30L,Q&lt;=10^5,T&lt;=30L,Q<=105,T<=30

【思路】
因为颜色种类比较少,所以可以用二进制来表示某个区间的颜色集合,合并时用按位或运算,用lazy标记区间更新,查询结果中二进制里1的个数就是答案

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define node tree[id]
#define lson tree[id<<1]
#define rson tree[id<<1|1]
using namespace std;const int maxn=100005;struct Tree{int left,right;int col,lazy;
}tree[maxn<<2];int n,m,q;void pushup(int id){node.col=lson.col|rson.col;}void pushdown(int id){if(node.lazy && node.left!=node.right){lson.lazy=node.lazy;lson.col=(1<<(node.lazy-1));rson.lazy=node.lazy;rson.col=(1<<(node.lazy-1));node.lazy=0;}
}void build(int id,int le,int ri){node.left=le;node.right=ri;node.lazy=0;if(le==ri){node.col=1;return;}int mid=(le+ri)>>1;build(id<<1,le,mid);build(id<<1|1,mid+1,ri);pushup(id);
}void update(int id,int le,int ri,int val){if(node.left==le && node.right==ri){node.col=(1<<(val-1));node.lazy=val;return;}pushdown(id);int mid=(node.left+node.right)>>1;if(ri<=mid) update(id<<1,le,ri,val);else if(le>mid) update(id<<1|1,le,ri,val);else{update(id<<1,le,mid,val);update(id<<1|1,mid+1,ri,val);}pushup(id);
}int query(int id,int le,int ri){if(node.left==le && node.right==ri){return node.col;}pushdown(id);int mid=(node.left+node.right)>>1;if(ri<=mid) return query(id<<1,le,ri);else if(le>mid) return query(id<<1|1,le,ri);else{return query(id<<1,le,mid)|query(id<<1|1,mid+1,ri);}
}int main(){while(scanf("%d%d%d",&n,&m,&q)==3){build(1,1,n);while(q--){char op[2];scanf("%s",op);if(op[0]=='C'){int a,b,c;scanf("%d%d%d",&a,&b,&c);if(a>b) swap(a,b);update(1,a,b,c);}else{int a,b;scanf("%d%d",&a,&b);if(a>b) swap(a,b);int ans=query(1,a,b);printf("%d\n",__builtin_popcount(ans));}}}return 0;
}

转载于:https://www.cnblogs.com/wafish/p/10465152.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何实施成功的数据清理流程

干净的数据是发现和洞察力的基础。 如果数据很脏&#xff0c;您的团队为分析&#xff0c;培养和可视化数据而付出的巨大努力完全是在浪费时间。 当然&#xff0c;肮脏的数据并不是新的。 它早在计算机变得普及之前就困扰着决策。 现在&#xff0c;计算机技术已普及到日常生活中…

nginx前端代理tomcat取真实客户端IP

nginx前端代理tomcat取真实客户端IP2011年12月14日⁄ nginx⁄ 暂无评论⁄ 被围观 3,000 次使用Nginx作为反向代理时&#xff0c;Tomcat的日志记录的客户端IP就不在是真实的客户端IP&#xff0c;而是Nginx代理的IP。要解决这个问题可以在Nginx配置一个新的Header&#xff0c;用来…

kubeadm安装kubernetes 1.13.2多master高可用集群

1. 简介 Kubernetes v1.13版本发布后&#xff0c;kubeadm才正式进入GA&#xff0c;可以生产使用,用kubeadm部署kubernetes集群也是以后的发展趋势。目前Kubernetes的对应镜像仓库&#xff0c;在国内阿里云也有了镜像站点&#xff0c;使用kubeadm部署Kubernetes集群变得简单并且…

通才与专家_那么您准备聘请数据科学家了吗? 通才还是专家?

通才与专家Throughout my 10-year career, I have seen people often spend their time and energy in passionate debates about what data science can deliver, and what data scientists do or do not do. I submit that these are the wrong questions to focus on when y…

ubuntu opengl 安装

安装相应的库&#xff1a; sudo apt-get install build-essential libgl1-mesa-dev sudo apt-get install freeglut3-dev sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev 实例&#xff1a; #include "GL/glut.h" void…

分享一病毒源代码,破坏MBR,危险!!仅供学习参考,勿运行(vc++2010已编译通过)

我在编译的时候&#xff0c;杀毒软件提示病毒并将其拦截&#xff0c;所以会导致编译不成功。 1>D:\c工程\windows\windows\MBR病毒.cpp : fatal error C1083: 无法打开编译器中间文件:“C:\Users\lenovo\AppData\Local\Temp\_CL_953b34fein”: Permission denied 1> 1>…

HTTP请求错误400、401、402、403、404、405、406、407、412、414、500、501、502解析

【转载】本文来自 chenxinchongcn 的CSDN 博客 &#xff0c;全文地址请点击&#xff1a;https://blog.csdn.net/chenxinchongcn/article/details/54945998?utm_sourcecopy HTTP 错误 400 400 请求出错 由于语法格式有误&#xff0c;服务器无法理解此请求。不作修改&#xff0…

数据科学家 数据工程师_数据科学家实际上赚了多少钱?

数据科学家 数据工程师目录 (Table of Contents) Introduction 介绍 Junior Data Scientist 初级数据科学家 Mid-Level Data Scientist 中级数据科学家 Senior Data Scientist 资深数据科学家 Additional Compensation 额外补偿 Summary 摘要 介绍 (Introduction) The lucrativ…

Spring Cloud构建微服务架构-Hystrix监控面板

在Spring Cloud中构建一个Hystrix Dashboard非常简单&#xff0c;只需要下面四步&#xff1a;愿意了解源码的朋友直接求求交流分享技术 一零三八七七四六二六 创建一个标准的Spring Boot工程&#xff0c;命名为&#xff1a;hystrix-dashboard。 编辑pom.xml&#xff0c;具体依赖…

Google 地图 API 参考

杨航收集技术资料&#xff0c;分享给大家 Google 地图 API 参考 Google 地图 API 现在与 Google AJAX API 载入器集成&#xff0c;后者创建了一个公共命名空间&#xff0c;以便载入和使用多个 Google AJAX API。该框架可让您将可选 google.maps.* 命名空间用于当前在 Google …

spotify歌曲下载_使用Spotify数据预测哪些“ Novidades da semana”歌曲会成为热门歌曲

spotify歌曲下载TL; DR (TL;DR) Spotify is my favorite digital music service and I’m very passionate about the potential to extract meaningful insights from data. Therefore, I decided to do this article to consolidate my knowledge of some classification mod…

Hook技术之Hook Activity

一、Hook技术概述 Hook技术的核心实际上是动态分析技术&#xff0c;动态分析是指在程序运行时对程序进行调试的技术。众所周知&#xff0c;Android系统的代码和回调是按照一定的顺序执行的&#xff0c;这里举一个简单的例子&#xff0c;如图所示。 对象A调用类对象B&#xff0c…

(第三周)周报

此作业要求https://edu.cnblogs.com/campus/nenu/2018fall/homework/2143 1.本周PSP 总计&#xff1a;1422 min 2.本周进度条 (1)代码累积折线图 (2)博文字数累积折线图 4.PSP饼状图 转载于:https://www.cnblogs.com/gongylx/p/9761852.html

功能测试代码python_如何使您的Python代码更具功能性

功能测试代码pythonFunctional programming has been getting more and more popular in recent years. Not only is it perfectly suited for tasks like data analysis and machine learning. It’s also a powerful way to make code easier to test and maintain.近年来&am…

layou split 属性

layou split&#xff1a;true - 显示侧分栏 转载于:https://www.cnblogs.com/jasonlai2016/p/9764450.html

BZOJ4503:两个串(bitset)

Description 兔子们在玩两个串的游戏。给定两个字符串S和T&#xff0c;兔子们想知道T在S中出现了几次&#xff0c;分别在哪些位置出现。注意T中可能有“?”字符&#xff0c;这个字符可以匹配任何字符。Input 两行两个字符串&#xff0c;分别代表S和TOutput 第一行一个正整数k&…

C#Word转Html的类

C#Word转Html的类/**//******************************************************************** created: 2007/11/02 created: 2:11:2007 23:13 filename: D:C#程序练习WordToChmWordToHtml.cs file path: D:C#程序练习WordToChm file bas…

分库分表的几种常见形式以及可能遇到的难题

前言 在谈论数据库架构和数据库优化的时候&#xff0c;我们经常会听到“分库分表”、“分片”、“Sharding”…这样的关键词。让人感到高兴的是&#xff0c;这些朋友所服务的公司业务量正在&#xff08;或者即将面临&#xff09;高速增长&#xff0c;技术方面也面临着一些挑战。…

iOS 钥匙串的基本使用

级别&#xff1a; ★☆☆☆☆ 标签&#xff1a;「钥匙串」「keychain」「iOS」 作者&#xff1a; WYW 审校&#xff1a; QiShare团队 前言 &#xff1a; 项目中有时会需要存储敏感信息&#xff08;如密码、密钥等&#xff09;&#xff0c;苹果官方提供了一种存储机制--钥匙串&a…

线性回归和将线拟合到数据

Linear Regression is the Supervised Machine Learning Algorithm that predicts continuous value outputs. In Linear Regression we generally follow three steps to predict the output.线性回归是一种监督机器学习算法&#xff0c;可预测连续值输出。 在线性回归中&…