首页 > 其他分享 >DS 小结

DS 小结

时间:2023-08-18 19:22:06浏览次数:38  
标签:log 后缀 复杂度 sqrt 区间 mathcal 小结 DS

DS 小结

  • Luogu P5046 [Ynoi2019 模拟赛] Yuno loves sqrt technology I

    对于全局询问容易使用归并排序求解答案,因此考虑分块将这个复杂度进行优化。

    将区间的贡献拆为散块对散块,散块对整块,整块对整块,分别处理计算。精细实现做到 \(\mathcal O(n\sqrt n)\)。

    注意常数优化。

  • Luogu P6109 [Ynoi2009] rprmq1

    考虑分治,并且将二维问题拍成一维问题加上时间轴。

    为什么可以这么处理?因为我们有可以处理历史最值的数据结构。因此可以猫树分治套上一个区间历史最值线段树求解。

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

  • Luogu P5611 [Ynoi2013] D2T2

    对于全局可以使用分治 \(\mathcal O(n^2)\) 求解。因此使用分块进行优化。

    可以从左至右挨个计算每个块对答案的贡献,块和块之间独立。使用双指针可以做到 \(\mathcal O(n\sqrt n)\)。

    超级卡常题。打死卡不过去了。

  • P5609 [Ynoi2013] 对数据结构的爱

    容易将函数表达成一个分段函数,即初始进这个区间的时候至少需要有 \(c_x\) 才能够在这个区间中被减去 \(x\) 次 \(p\)。容易发现这个东西可以放到线段树上,可以做到一次询问拆成 \(\mathcal O(\log n)\) 个区间,然后每个区间用二分做到一次询问 \(\mathcal O(\log^2 n)\) 的复杂度。

    那么考虑如何预处理这个 \(c_x\),显然可以 \(c_{x+y}\gets\max(c_x,c_y-\text{sum}_{\text{lson}}+x\cdot p)\)。这样做是 \(\mathcal O(n^2)\) 的。发现可以使用决策单调性,然后即可把预处理优化至 \(\mathcal O(n\log n)\)。

    总时间复杂度 \(\mathcal O(n\log n + q\log^2 n)\)。

  • P6783 [Ynoi2008] rrusq

    将询问离线,按照 \(r\) 排序,从小到大加入矩形。

    对于每一个点可以处理出一个 \(l_i\) 表示最晚被覆盖的时间,显然询问就是查询一个后缀和。

    考虑这个 \(l_i\) 如何维护。容易发现,每次加入一个矩形就是对一个矩形内的关键点的区间覆盖,容易使用 KDT 做到单次修改 \(\mathcal O(\sqrt n)\) 的复杂度。

    因为每次修改会影响后缀和,所以需要使用数据结构维护这个后缀和。由于总共有 \(\mathcal O(n\sqrt n)\) 次修改, \(\mathcal O(n)\) 次查询,因此使用 \(\mathcal O(1)-\mathcal O(\sqrt n)\) 的分块平衡复杂度。

    总时间复杂度 \(\mathcal O(n\sqrt n)\)。

  • P5311 [Ynoi2011] 成都七中

    一个性质就是树上的一个连通块一定存在一个点,使得这个点在点分树上深度最小,且其他所有联通块中的点都在这个点的子树内。因此可以将所有询问扔给 \(x\) 的某个祖先进行处理。

    然后对于子树内的贡献,一个点有效当且仅当这个点到当前分支中心的路径上的所有点都满足值域限制。因此在子树内做 2-side 即可。

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

  • CF1270H

    首先所有连通块一定是一个连续的区间,这个容易证明。因此一个分割点 \(p\) 一定满足 \(\min\limits_{i=1}^p a_i>\max\limits_{i=p+1}^na_i\)。

    考虑枚举后半部分的值 \(w\),将大于 \(w\) 的部分设为 \(1\),其余为 \(0\),那么这个 \(w\) 有贡献的序列形如 \(111\cdots1000\cdots0\)。考虑相邻两个数 \(a_i,a_{i+1}(a_i<a_{i+1})\),当 \(w\in [a_i,a_{i+1}]\) 会产生贡献。因此可以使用线段树去维护 \(w\) 值。对于每一对相邻的 \(a_i,a_{i+1}\),将 \([a_i,a_{i+1})\) 区间加 \(1\)。最后答案的数量即为 \(1\) 的个数。

    将 \(a_0:=\infty,a_{n+1}:=0\),可以使得全局最小值为 \(1\),因此只需要维护最小值个数即可。

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

  • UOJ515 【UR #19】前进四

    离线询问,从右向左扫描线。设当前位置为 \(l\),开一个线段树维护 \([0,t]\) 时间的后缀 \(\min\) 和答案。

    容易发现,每次修改就是对这个线段树上的一个后缀取 \(\min\)。而对于答案的统计就是这个点被修改的次数。

    直接使用 Seg Beats 解决即可,时间复杂度 \(\mathcal O(n\log n)\)。

标签:log,后缀,复杂度,sqrt,区间,mathcal,小结,DS
From: https://www.cnblogs.com/hanx16msgr/p/17641431.html

相关文章

  • C++快速入门 第五讲:输入输出小结
    实例1:根据输入内容输出1#include<iostream>2usingnamespacestd;//名字空间3intmain()4{5charanswer;67cout<<"请问可以格式化您的硬盘吗?!【Y/N】"<<"\n";8cin>>answer;910switch(answer......
  • springboot redssion 单机模式/集群模式/哨兵模式连接
    引入依赖:<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.10.7</version></dependency><dependency><groupId>......
  • AndroidStudio SurfaceView SurfaceHolder关系
    电视机就像是屏幕,而SurfaceView则是你要在屏幕上显示的内容。然而,你不能直接在电视机上直接绘制内容,就像你不能直接在SurfaceView上绘制内容一样。这就是SurfaceHolder登场的地方。SurfaceHolder就像是遥控器,它是控制你如何在电视屏幕上显示内容的工具。你通过遥控器来切......
  • 学习提示嵌入(Prompting Embeds)-AI基础系列文章第4篇
    您的关注是对我最大的支持......
  • #yyds干货盘点#jdk8小版本差异
    1JavaSE8u202andolderupdatesareavailable,undertheBinaryCodeLicense(“BCL”).从官网上可知,在OracleJDK的版本历史中,JDK8u202是最后一个免费的版本,支持免费商业用途2在JDK8u131中,JDK增加了一个新的特性,使得Java运行时可以自动检测它是在Docker容器中运行,然后使用......
  • UVA1435 Business Cards 题解
    题目链接思路一道找规律思维题,代码非常简单。能否把\(c\timesd\)的矩阵分成若干个\(a\timesb\)的矩阵,其实就是问你\(a\)或\(b\)中有没有\(c\)或\(d\)的因数。只要存在一组,即可分割成题目所要求的矩阵,输出YES;反之,输出NO。注意:其实每个测试点都有多组数据,但题......
  • #yyds干货盘点# LeetCode程序员面试金典:存在重复元素 II
    题目:给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i]==nums[j] 且 abs(i-j)<=k 。如果存在,返回 true ;否则,返回 false 。 示例 1:输入:nums=[1,2,3,1],k=3输出:true示例2:输入:nums=[1,0,1,1],k=1输出......
  • #yyds干货盘点# LeetCode程序员面试金典:组合和四
    1.简述:给你一个由 不同 整数组成的数组 ,和一个目标整数 。请你从 中找出并返回总和为 的元素组合的个数。numstargetnumstarget题目数据保证答案符合32位整数范围。 示例1:输入:nums=[1,2,3],target=4输出:7解释:所有可能的组合为:(1,1,1,1)(1,1,2)(1,2,1)......
  • 企业内容建站系统 ModStartCMS v7.0.0 多语言开发优化,多个常用组件升级
    ModStart是一个基于Laravel模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。系统完全开源,基于Apache2.0开源协议,免费且不限制商业使用。功能特性丰富的模块市场,后台一键快速安装会员模块通用且完整,支持完整的API调用大......
  • 8.17模拟赛小结
    前言最卡常的一集T1激光通讯原题题意:给你一个大小不超过\(100\times100\)的矩阵其中有一个起点,终点和一些障碍物求从起点到终点不碰到障碍物的最小转弯次数思考一开始肯定是想记忆化dfs但是那样写了下发现麻烦于是改成了bfs容易发现转弯次数能小就小所以将普通......