分块 莫队

news/2024/11/23 0:17:38/

CF940F Machine Learning
莫队维护区间每个数字出现的次数,维护某个出现次数是否出现过,暴力枚举mex即可,易证每次枚举最多 n \sqrt n n

CF375D Tree and Queries
树转链,莫队维护区间每个颜色出现的次数,如果再单纯维护次数为k的颜色有多少,最后枚举 1 − k 1-k 1k,超时,所以直接维护次数 > = k >=k >=k的颜色有多少

P4074 [WC2013] 糖果公园
树转链,莫队维护区间,按题意计算新加一个点的贡献。但是发现询问是一条路径,是多个不同的区间合起来的答案,所以树转链用欧拉序列,维护每个点遍历到和回溯到的时间戳,然后将两点的路径转换为区间问题,如果一个点在区间中出现两次,说明不在路径上,贡献抵消。然后特判一下 l c a ( x , y ) lca(x,y) lca(x,y)是否与 x , y x,y x,y不重合,单独计算 l c a ( x , y ) lca(x,y) lca(x,y)的贡献

CF1514D Cut and Stick
如果整个序列中没有数超过 ⌈ n 2 ⌉ \lceil {n \over 2} \rceil 2n的数,不用划分序列
如果有,当且仅有一个,只需要把这个数用其他数尽可能放到一个序列中,再将这个数剩下的单独成一个序列即可
得出组数为 2 × m a x n − ( r − l + 1 ) 2 \times maxn-(r-l+1) 2×maxn(rl+1)
所以只要维护区间中某个数出现的最大次数即可,莫队或者主席树维护
(主席树以区间下标为时间轴,每次只要线段树二分查询是否存在点 > ⌈ n 2 ⌉ >\lceil {n \over 2} \rceil >2n,易证查询时间复杂度O ( l o g n ) (logn) (logn)

P3203 [HNOI2010] 弹飞绵羊
CF13E Holes
分块,对于每个点,维护跳出当前块需要多少步,跳出后到达哪个点,这样修改只要 O ( n ) O(\sqrt n) O(n ) 块内倒序暴力重构,查询因为是一个块一个块地跳,所以也是 O ( n ) O(\sqrt n) O(n )。要计算最后从哪个点跳出,需要保留一下跳块时的最后跳出点,再看是否能一个点一个点地继续往后跳

CF455D Serega and Fun
强制在线,首先考虑朴素做法,对于整体来说,单次修改时间复杂度为 O ( n ) O(n) O(n),考虑分块,对于修改一个区间,如果包含了一些块,这个块只要弹出块尾,添加块首即可,用双端队列可以做到 O ( 1 ) O(1) O(1)维护,对于两端只有不完整的块, d e q u e . e r a s e O ( n ) deque.erase O(\sqrt n) deque.eraseO(n )解决
那么对于查询,只需要维护块内每个数出现了多少次
最后特判一下区间 [ l , r ] [l,r] [l,r]在同一个块的情况


http://www.ppmy.cn/news/1035596.html

相关文章

C# 随心记

#region 批量保存到数据库 public bool InsertDB(DataTable dt) { bool bResult true; LogInfo.WriteTextToFile("使用Bulk插入的实现方式"); Stopwatch sw new Stopwatch(); using (SqlConnecti…

Centos下的tcpdump抓包用法

先查一下是否安装, 无的话装一下 (版本低的用yum install) : rpm -qa tcpdump dnf install tcpdump 1. 列出能抓包的网卡: tcpdump -D | --list-interfaces 2. 在eth0网卡上抓来源为10.1.1.1 的包, 只抓一个包 (-n这里是不解析DNS) : tcpdump -i eth0 -n src 10.1.1.1 -…

机器学习算法之-逻辑回归(2)

为什么需要逻辑回归 拟合效果太好 特征与标签之间的线性关系极强的数据,比如金融领域中的 信用卡欺诈,评分卡制作,电商中的营销预测等等相关的数据,都是逻辑回归的强项。虽然现在有了梯度提升树GDBT,比逻辑回归效果更…

关于flink-sql-connector-phoenix的重写逻辑

目录 重写意义 代码结构 调用链路 POM文件配置 代码解析 一、PhoenixJdbcDynamicTableFactory

神经网络基础-神经网络补充概念-07-使用计算图求导

步骤 定义计算节点和操作: “x” 是输入变量。 “Add” 表示加法操作。 “Sub” 表示减法操作。 “Multiply” 表示乘法操作。 计算函数值: 首先,我们将 x0 的值代入计算图中,计算出函数的值。 反向传播计算导数: 我…

【Visual Studio Code】--- Win11 配置 VS Code 为中文 超详细

Win11 配置 VS Code 为中文 超详细 一、概述二、重要提示二、配置 VS Code 为中文 一、概述 一个好的文章能够帮助开发者完成更便捷、更快速的开发。书山有路勤为径,学海无涯苦作舟。我是秋知叶i、期望每一个阅读了我的文章的开发者都能够有所成长。 二、重要提示…

Python基础知识:列表推导式详解

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 我们经常需要这样处理一个列表: 把一个列表里面的每个元素, 经过相同的处理 ,生成另一个列表。 👇 👇 👇 更多精彩机密、教程,尽在下方…

​可视化绘图技巧100篇进阶篇(五)-阶梯线图(Step Chart)

目录 前言 图表类型特征 适用场景 图例 绘图工具及代码实现 ECharts SMARTBI