首页 > 其他分享 >2025.01.10 杂题记录

2025.01.10 杂题记录

时间:2025-01-10 21:54:27浏览次数:1  
标签:10 set log 复杂度 扩展 贡献 杂题 询问 2025.01

2025.01.10 杂题记录

CF1998E2

这题是求能否吃完,而不是最多吃多少个。

首先如果 \(x=n\),那么是经典问题,每次往左右二分一个位置扩展,每次扩展两次和都会翻倍,复杂度就是 \(O(n\log n\log V)\)。

我们考虑每个起始点对每个 \(f(i)\) 的贡献。我们每次应当优先往左扩展,如果扩展不了,往右扩展时应当扩展到第一个使得能再往左扩展的位置,二分找到这个位置然后尝试扩展到这个位置。重复这个过程直到左边吃到 \(1\),这样我们就能求出第一个满足可以吃到 \(1\) 的右端点。之后继续往右扩展找到最后一个满足的右端点。

这样我们发现每个起始点对 \(f(i)\) 的贡献,\(i\) 是一个区间,差分贡献答案。

这样时间复杂度还是 \(O(n\log n\log V)\) 的。

P5445 [APIO2019] 路灯

考虑用连通块的左右端点 \(l\) 和 \(r\) 放到二维平面上,用点 \((l,r)\) 表示一个连通块,把点带上贡献,再带上时间一维,那么查询 \(L,R\) 就变成了一个三维偏序问题,要满足 \(l\le L\land R\le r\) 且时间在询问之前。这部分可以 CDQ分治 解决。

我们可以用 set 维护当前每个连通块,一次插入点或删点会产生 \(O(1)\) 个变化,set 中还要记录连通块形成的时间以计算贡献。

发现如果询问时 \(L,R\) 在一个连通块内,这部分的贡献不好在偏序中计算,这部分可以直接在询问时在 set 中查询计算。

时间复杂度 \(O(n\log ^2n)\),瓶颈在分治。

P4269 [USACO18FEB] Snow Boots G

水题。靴子不能跨过,当且仅当,小于等于 \(s_i\) 的雪之间最大的间隔不超过 \(d_i\)。

考虑离线下来以后,将靴子和雪都按高度排序,然后双指针加入雪和查询靴子,用 set 维护相邻雪堆的间隔与间隔的最大值。

时间复杂度 \(O(n\log n)\)。

[NOISG2022 Qualification] Dragonfly

考虑离线下来,因为一个节点权值为 \(0\) 后就没有贡献了,那么考虑求出最后能产生贡献的时刻 \(t_i\)。

那么能吃节点 \(i\) 的询问在 \(i\) 的子树内。考虑以时间为下标建线段树,询问就在这个询问所在的时间插入一个点,那么我们可以自底向上线段树合并,合并到点 \(i\) 时在线段树上二分即可求出 \(t_i\)。这一部分的线段树只需维护一个子树大小。这一部分是 \(O(d\log d)\) 的。

求出 \(t_i\) 后,对于第 \(j\) 个询问,我们就是求满足下列条件的颜色个数:从 \(1\) 到 \(h_j\) 路径上存在这种颜色的点 \(i\) 使得 \(t_i\ge j\)。

考虑从根开始遍历,进入一个节点就插入这个节点的贡献,离开子树就撤销贡献。

我们现在就想知道从 \(1\) 到当前点的路径上,每种颜色 \(t\) 的最大值是多少。然后每次最大值更新时用数据结构维护一下即可。

由于如果存在颜色相同的 \(i,j\) 满足 \(i\) 是 \(j\) 的祖先,且 \(t_i\ge t_j\),那么 \(j\) 是没有用的。所以考虑对每种颜色开一个栈,当 \(t\) 大于栈顶时才推进栈中,然后用一个以 \(t\) 为下标的树状数组维护:有多少种颜色的 \(t\) 大于等于某个数。

这一部分也是 \(O(d\log d)\) 的。

然后就做完了,最终的复杂度就是 \(O(d\log d)\) 的(这里我们设 \(n,d\) 同阶)。

标签:10,set,log,复杂度,扩展,贡献,杂题,询问,2025.01
From: https://www.cnblogs.com/dccy/p/18664781

相关文章

  • 1.10日学习笔记之C++的类
    ·类其实就是一种数据类型,和结构相似。类的成员包括两类,属性(成员变量)和行为(成员函数)。·成员函数定义的两种方法(可能有多种,觉得这两种比较常用)1、将类的成员函数定义在类体内,如classCPerson{public:shortage;shortgetage(){returnage;}};2、将......
  • 1011. 在 D 天内送达包裹的能力
    在D天内送达包裹的能力传送带上的包裹必须在days天内从一个港口运送到另一个港口。传送带上的第i个包裹的重量为weights[i]。每一天,我们都会按给出重量(weights)的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在days天内将传送带上的所有包......
  • [CF1019C] Sergey's problem 做题记录
    小清新构造题,会就会,不会就不会。link注意到走两步很特殊,尝试从走一步拼出来,考虑归纳法:随便选择一个点\(x\),然后删掉\(x\)和所有\(y\)满足存在边\((x,y)\)。设剩下的图的答案集合为\(S\),若不存在\(z\inS\)满足存在边\((z,x)\),则将\(x\)加入\(S\)。否则......
  • 二叉树层序遍历 Leetcode102.二叉树的层序遍历
    二叉树的层序遍历相当于图论的广度优先搜索,用队列来实现(二叉树的递归遍历相当于图论的深度优先搜索)102.二叉树的层序遍历给你二叉树的根节点 root ,返回其节点值的 层序遍历 。(即逐层地,从左到右访问所有节点)。示例1:输入:root=[3,9,20,null,null,15,7]输出:[[3],[......
  • JSP课程辅助教学系统x6z10(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、项目背景随着教育技术的快速发......
  • 在 Safari 浏览器中,快速将页面恢复到 100% 缩放(也就是默认尺寸)Command (⌘) + 0 (零)
    在Safari浏览器中,没有一个专门的快捷键可以将页面恢复到默认的缩放比例。但是,你可以使用以下两种方法快速将页面恢复到100%缩放(也就是默认尺寸):方法一:使用快捷键(最常用)Command(⌘)+0(零)这个快捷键会立即将当前页面的缩放比例重置为100%。这是最常用的方式,......
  • 炸弹 (boom.c)(100分双端递推+分割线优化)
    炸弹(boom.c)时间限制:800ms内存限制:256000KiB进度:57/12406=0.5%题目描述出题助教:Sakiyary验题助教:Corax、XiEn、ErinwithBMQ、runz、MacGuffin、Bob维多利亚的腐烂荒野上出现了 N 个魔物,你和小维需要抓紧时间调配炸弹对付它们。荒野可以视为一张方格图,(x_i......
  • 12月10日
    今日深入研读了Java中的异常处理机制,这是编程中极为关键的一环,它能有效保障程序的健壮性与稳定性,确保程序在遭遇错误时能够合理地响应并尽可能地继续执行。异常是指程序运行过程中出现的不正常情况,如除数为零、数组越界等。Java通过异常处理机制来应对这些突发状况。异常处理主要......
  • 12月10日总结
    今天在哔哩哔哩学习了web前端页面的开发的相关知识,Web前端页面的开发是构建和优化网站用户界面的过程,主要包括实现用户界面的结构(HTML)、样式(CSS)和交互(JavaScript)功能。以下是对web前端页面开发的具体介绍:HTML:HTML用于定义网页的结构和内容,是构建网页的基础。通过使用各种标签,如标......
  • 数据结构实验10
    6-4快速排序本题要求实现快速排序的一趟划分函数,待排序列的长度1<=n<=1000。函数接口定义:intPartition(SqListL,intlow,inthigh);其中L是待排序表,使排序后的数据从小到大排列。类型定义:typedefintKeyType;typedefstruct{KeyTypeelem;/elem[0]一般作哨......