洛谷9695 [GDCPC 2023] Traveling in Cells 题解(线段树+二分)

news/2025/10/8 10:44:59/文章来源:https://www.cnblogs.com/XiaoQuQu/p/19129237

考虑对于一个给定的颜色集合 \(S\),我们可达的位置一定是一个区间 \([L,R]\)。于是考虑怎么求出 \(L,R\) 即可。

考虑二分,现在问题转换成判定一个区间 \([x,R]\)(区间 \([L,x]\) 同理)是否所有颜色都在我们的集合 \(S\) 中。

考虑对每一个颜色开一个线段树。区间 \([x,R]\) 里的每个颜色都在集合 \(S\) 中,等价于 \(S\) 中所有颜色在 \([x,R]\) 里的出现次数之和为 \(R-x+1\)

时间复杂度 \(O(n\log^2 n)\),如果实现的精细一点用线段树上二分可以做到 \(O(n \log n)\)

const int MAXN = 1e5 + 5;
int n, q, c[MAXN], v[MAXN];struct _sgt {struct _node {int v, ls, rs;} tr[MAXN << 6];int tot;void pushup(int p) {tr[p].v = tr[tr[p].ls].v + tr[tr[p].rs].v;}void modify(int &p, int l, int r, int k, int v) {if (!p) p = ++tot;if (l == r) return tr[p].v += v, void();if (k <= mid) modify(tr[p].ls, l, mid, k, v);else modify(tr[p].rs, mid + 1, r, k, v);pushup(p);}int query(int p, int l, int r, int L, int R) {if (!p) return 0;if (L <= l && r <= R) return tr[p].v;int res = 0;if (L <= mid) res += query(tr[p].ls, l, mid, L, R);if (mid < R) res += query(tr[p].rs, mid + 1, r, L, R);return res;}void clear(int p) {if (tr[p].ls) clear(tr[p].ls);if (tr[p].rs) clear(tr[p].rs);tr[p].v = tr[p].ls = tr[p].rs = 0;}
} t;
int rt[MAXN];int solveR(int x, int k, vector<int> a) {int l = x, r = n + 1;while (l + 1 < r) {int sum = 0;for (int i = 0; i < k; ++i)sum += t.query(rt[a[i]], 1, n, x, mid);if (sum == (mid - x + 1)) l = mid;else r = mid;}return l;
}int solveL(int x, int k, vector<int> a) {int l = 0, r = x;while (l + 1 < r) {int sum = 0;for (int i = 0; i < k; ++i)sum += t.query(rt[a[i]], 1, n, mid, x);if (sum == (x - mid + 1)) r = mid;else l = mid;}return r;
}struct _bit {int tr[MAXN];int lowbit(int x) { return x & (-x); }void modify(int x, int v) {while (x <= n) {tr[x] += v;x += lowbit(x);}}int query(int x) {int res = 0;while (x) {res += tr[x];x -= lowbit(x);}return res;}
} bit;void work() {cin >> n >> q;for (int i = 1; i <= n; ++i)cin >> c[i];for (int i = 1; i <= n; ++i)cin >> v[i];for (int i = 1; i <= n; ++i) {t.modify(rt[c[i]], 1, n, i, 1);bit.modify(i, v[i]);}while (q--) {int op; cin >> op;if (op == 1) {int p, x; cin >> p >> x;t.modify(rt[c[p]], 1, n, p, -1);t.modify(rt[x], 1, n, p, 1);c[p] = x;} else if (op == 2) {int p, x; cin >> p >> x;bit.modify(p, x - v[p]);v[p] = x;} else {int x, k; cin >> x >> k;vector<int> a(k);for (int i = 0; i < k; ++i)cin >> a[i];int L = solveL(x, k, a), R = solveR(x, k, a);cout << bit.query(R) - bit.query(L - 1) << endl;}}for (int i = 1; i <= n; ++i) {t.clear(rt[i]);bit.tr[i] = 0;}fill(rt, rt + 1 + n, 0ll);t.tot = 0;
}

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

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

相关文章

瑞安网站建设优化美食分享网站建设策划书

Hadoop的第一个核心组件&#xff1a;HDFS&#xff08;分布式文件存储系统&#xff09; 一、HDFS的组成1、NameNode2、DataNode3、SecondaryNameNode4、客户端&#xff1a;命令行/Java API 二、HDFS的基本使用1、命令行操作2、Java API操作 三、HDFS的工作流程问题&#xff08;H…

2025 振动盘厂家最新推荐榜单:涵盖精密 / 电子 / 定制等多场景,揭秘市场信赖品牌选择秘籍笔筒振动盘/振动盘定做/橡胶振动盘厂家推荐

在自动化生产加速渗透的当下,振动盘作为物料排序送料的核心设备,直接决定生产线效率与产品合格率。然而当前市场品牌繁杂,既有深耕多年的企业,也有近年涌现的新兴力量,产品性能、定制能力与服务质量差异显著。许多…

上海法律网站建设html5彩票网站模板

文章详细解析 注意点 1.当作者在文章中写到:实际问题是:我们从根本上改变了吗? 说明:我们没有发生根本上的改变,作者不同意前文中的未来派诗歌 知识点 ----单词 unhampered adj无阻碍的 finite adj有限的 ink n墨水 corresponding adj相应的,符合的 upsetting adj令人生厌…

Axure 下拉框联动 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年震动盘厂家最新推荐榜单:覆盖精密震动盘 / 电子震动盘 / 塑料震动盘等品类,为企业高效选型提供权威参考

在当前自动化生产飞速发展的背景下,震动盘作为自动化上料核心设备,已成为五金、电子、医疗器械等众多行业高效生产的关键一环。然而,市场上震动盘品牌数量激增,产品质量、技术水平与服务能力差异显著,部分品牌存在…

题解:qoj6170 凸多边形正则划分问题

题意:给定 \(n,k\),求 \(nk-2(n-1)\) 边形的 \(k\) 角剖分数量,\(n\le1.1\times10^6\)。 做法: 前置知识:多项式复合逆:如果 \(F(G(x)) = G(F(x))=x\),则称 \(F,G\) 互为复合逆。拉格朗日反演公式:设 \(F\) 的…

web安全开发,在线%机器学习异常流量检测系统%开发demo - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

织梦手机电影网站模板天津网站设计公司

最近阿里云centos主机到期了改为使用Ubuntu操作系统&#xff0c;在上面安装mysql并远程连接出现了一系列问题并解决。 之前在centos系统上下载mysql8的教程如下&#xff1a; 阿里云服务器&#xff08;centos7&#xff09;上的MySQL8数据库下载&#xff0c;安装和远程连接 主机操…

工程建设国家标准网站常州网站建设开发

文章目录 openGauss学习笔记-108 openGauss 数据库管理-管理用户及权限-用户108.1 创建、修改和删除用户108.2 私有用户108.3 永久用户108.4 用户认证优先规则 openGauss学习笔记-108 openGauss 数据库管理-管理用户及权限-用户 使用CREATE USER和ALTER USER可以创建和管理数据…

深圳企业官网网站建设网络推广营销方案100例

网络安全设计、原则、审计等知识点的精讲如下&#xff1a; 网络安全设计与原则&#xff1a; 网络安全设计是指在系统或网络的设计过程中考虑到安全性&#xff0c;并采取相应的安全措施来保护系统或网络不受威胁。安全设计原则包括最小权限原则&#xff08;Least Privilege Prin…

2025 铅板源头厂家最新推荐排行榜:聚焦防辐射铅门 / 放射科防护 / 高纯度铅皮,深挖性价比与适配性

在放射科、DR 室、宠物医院墙体防护等场景中,铅板的纯度、规格精度与耐腐蚀性能直接决定防护安全性,2 毫米铅皮、3mm 厚铅板等细分需求更对厂家适配能力提出高要求。当前市场厂家良莠不齐,部分产品存在铅锭纯度不足…

2025 年国内电容厂家最新推荐排行榜:聚焦固态 / 高压 / 安规 / CBB / 超级电容多品类,精选优质厂商助力企业精准采购选型

当前,电容作为电子设备核心基础元件,在消费电子、工业控制、新能源汽车、储能等领域的需求持续攀升,固态、高压、安规等细分品类电容的应用场景也不断拓展。然而,市场上电容品牌数量激增,资质与性能差异悬殊,企业…

2025 年 MOS 管厂家最新推荐排行榜权威发布,覆盖高压 / 低压 / 大功率 / N 型等类型,助力企业高效采购精准选型

当前电子元器件行业中,MOS 管作为核心组件,广泛应用于医疗设备、汽车电子、储能等关键领域,其品质与供应稳定性直接决定下游企业的生产效率与产品竞争力。但市场上 MOS 管品牌数量繁杂,部分品牌存在资质不规范、产…

网站建设 镇江万达纯净软件网站推荐

axios和fetch都是用于发起HTTP请求的工具&#xff0c;但是它们有一些区别&#xff1a; 语法和用法&#xff1a;axios是一个基于Promise的HTTP客户端&#xff0c;具有更简洁和直观的语法&#xff0c;可以方便地发送GET、POST、PUT等各种请求&#xff0c;并提供了更多的请求配置选…

广州建设网站是什么南宁seo建站

QT中资源文件resourcefile的使用 之前添加图标的方法使用资源文件的方法创建资源文件资源文件添加前缀资源文件添加资源使用资源文件中的资源 在Qt中引入资源文件好处在于他能提高应用程序的部署效率并且减少一些错误的发生。 在程序编译过程中&#xff0c; 添加到资源文件中的…

Chrome浏览器插件开发

本书是一本全面深入的浏览器插件开发教程,旨在帮助读者理解并掌握创建功能强大的浏览器插件的技术和方法。本书不仅详细介绍了插件开发的理论知识,同时还提供了丰富的实战代码,使读者能够通过实际操作来巩固和提升技…

网站开发者id北京网站建设课程培训班

思维导图&#xff1a;https://www.processon.com/view/link/60d6fcaf1e08532a43bea653

昆山设计网站的公司哈尔滨关键词优化排行

1、Lombok简介 作为java的忠实粉丝&#xff0c;但也不得不承认&#xff0c;java是一门比较啰嗦的语言&#xff0c;很多代码的编写远不如其他静态语言方便&#xff0c;更别说跟脚本语言比较了。 因此&#xff0c;lombok应运而生。 Lombok是一种工具库&#xff0c;它提供了一组…

北京哪里做网站好2022年热点新闻事件

在上一篇文章里&#xff0c;制作了显示血量和蓝量的ui&#xff0c;并且还将ui和获取数据使用的控制器层创建出来并初始化成功。现在只有主用户控件上面被添加了控制器层&#xff0c;还未给每个用户控件赋予控制器层。接下来要实现对属性的广播功能&#xff0c;在属性值变化的时…

2025 年最新波形护栏厂家推荐排行榜:聚焦国内优质厂商技术优势与服务能力,助力采购方精准选型 三波/二波/双波/喷塑/公路/热浸锌/浸塑波形护栏厂家推荐

当前道路交通建设持续推进,波形护栏作为保障道路安全的关键设施,其质量直接关系到公众出行安全与道路运营稳定性。但市场上厂家数量繁杂,部分厂商存在技术落后、原材料劣质、质量检测缺失等问题,导致产品耐冲击性差…