- 2025-01-06可持久化数据结构
可持久化数据结构呢,就是说这些数据结构,它们都非常持久(其实就是可以访问和修改历史版本的信息可持久化线段树可持久化权值线段树就是主席树如果你还不太了解,可以看看当然还有更普遍的可持久化线段树——支持区间修改的。考虑pushdown会影响下方历史版本的线段树信息,自然想到
- 2025-01-06代码随想录 test1(二分详解,包括二分答案)
一、二分查找关键:确定待查找的元素出现在什么区间内,循环不变量:目标值一定在当前搜索范围内。模板一:在左闭右闭区间内查找目标元素 由于待查找元素在左闭右闭区间,因此要想在已有数组内查找该元素,就要让初始左右指针分别为0,size-1(刚好覆盖整个数组)。
- 2025-01-05线段树进阶练习专题
小白逛公园题目大意:求一段区间里最大子段和思路:有空补(code:#include<bits/stdc++.h>usingnamespacestd;constintMAXN=500100;intm,n;inta[MAXN];inlineintread(){ intx=0,f=1; charch=getchar(); while(ch>'9'||ch<'0'){ if(ch==
- 2025-01-05『省选模拟赛3』 Day10 总结
前言你要搞清楚自己人生的剧本不是你父母的续集,不是你子女的前传,更不是你朋友的外篇。第三次考试,第二次被我咕掉了。\(68+35+100=203\),在高二没参考的情况下,\(\texttt{BZRk2}\),也还算能看。感觉这次的排名和上次是倒过来的。T1这么唐氏的DP状态有限,是可过的,居然被我直
- 2025-01-05code
#include<bits/stdc++.h>usingnamespacestd;#defineendl'\n'#defineFL(a,b,c)for(inta=(b),a##end=(c);a<=a##end;a++)#defineFR(a,b,c)for(inta=(b),a##end=(c);a>=a##end;a--)#definelowbit(x)((x)&-(
- 2025-01-05【C语言】数组——二分查找
题1704.二分查找【简单】intsearch(int*nums,intnumsSize,inttarget){intleft=0,right=numsSize-1;intmid=(left+right)/2;intresult=-1;while(left<=right){if(nums[mid]==target){r
- 2025-01-04二分 + 倍增 做题笔记
一些关于二分和倍增的题,大体按照题目难度排序。1.CF1951HThanosSnap简要题意给定一个长为\(2^n\)的序列\(a_0,a_1,\cdots,a_{2^n-1}\),对所有\(t\in[1,n]\)求解如下问题:A和B两人在序列\(a\)上博弈,一共进行\(t\)轮操作。每轮操作的流程如下:A可以选
- 2025-01-04ybt1678 独木桥
1678:独木桥时间限制:1500ms内存限制:131072KB【题目描述】Alice和Bob是好朋友,有一天他们带了\(n\)个孩子过独木桥。为了方便,我们将问题抽象如下:将独木桥看成一个长度无限长的实数轴,将每个孩子看作数轴上的一个实数点。数轴从左到右坐标不断增大。孩子的位置用
- 2025-01-04二分查找 - 相关基础算法总结
问题1:寻找target位置,没有返回-1问题2:从右往左,寻找<target的第一个位置问题3:从左往右,寻找>target的第一个位置问题4:从右往左,寻找<=target的第一个位置问题5:从左往右,寻找>=target的第一个位置以上问题是求很多解力扣算法题的基础,需要好好的掌握: 问题1:寻找
- 2025-01-04分治杂记
分治杂记分治(DivideandConquer),就是把一个复杂的问题分成若干子问题,分别求解。本质是缩小了问题的规模。普通的分治[ABC373G]NoCrossMatching给定平面上的\(n\)个黑点和\(n\)个白点,构造一种方案,将黑白点两两匹配并连线段,使得任意两条线段不相交。\(n\leq100\),保
- 2025-01-04leetCode 33:搜索旋转排序数组
题目:整数数组nums按升序排列,数组中的值互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[nums[k],nums[k+1],...,nums[n-1],nums[0],nums[1],...,nums[k-1]](下标从0开始计数)。例如,[0,1,2,4,5,6,7]在下标3
- 2025-01-04【优选算法】Binary-Blade:二分查找的算法刃(下)
文章目录1.山脉数组的峰顶索引2.寻找峰值3.寻找旋转排序数组中的最小值4.点名希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力!本篇接上一篇二分查找,主要通过部分题目熟悉二分查找的进阶使用,重点强调二段性,找到两个区间不同的地方在哪,多画图划分界限
- 2025-01-04【题解】AT agc057A Antichain of Integer Strings
记\(f(x)\)为最小的大于\(x\)的\(y\),使得\(x\)是\(y\)的子串。易得:\[f(x)=\min(10x,x+10^{|x|})\]其中\(|x|\)表示\(x\)的位数。可以发现,\(f(x)\)为一个严格单调递增的函数。考虑贪心策略,显然选小的数不如选大的数优,因为小的数更有可能成为别的数的子串。于是,我
- 2025-01-04线段树综合
线段树即使是最基础的线段树也有很多应用,比如什么优化dp啦,标记的神奇维护啦……需要思路灵活一点,把题目条件抽象成更为简单的形式扫描线求矩形面积并,周长,二维数点等等线段树作用即把静态O(n^2)变为动态O(nlogn).想象过程,就是在一张图上,一条线从上到下扫描。所以线段树本质维
- 2025-01-03变分推断(VI)、随机梯度变分推断(SGVI/SGVB)、变分自编码器(VAE)串讲
参考资料:VI参考:PRMLChapter10.SGVI原文:Auto-EncodingVariationalBayes--Kingma.VAE参考1:TutorialonVariationalAutoencoders--CARLDOERSCH.VAE参考2:StanfordUniversityCS236:DeepGenerativeModels.泛函和变分法本章主要是了解:"变分"这个名称是怎么来的。
- 2025-01-03Python-二分法的进阶与Bisect库详解
1.1前言:在进阶之前可能很多学过二分法的人都认为二分查找十分简单,但事实不完全如此。比如你是否熟练的知道while的条件有等于时返回究竟是mid还是left,还是right,还是随便返回一个没有等于时又是返回什么……本文将给大家讲解二分法的进阶和bisect库函数的运用,并且再讲解之后
- 2025-01-03287. 寻找重复数
寻找重复数给定一个包含n+1个整数的数组nums,其数字都在[1,n]范围内(包括1和n),可知至少存在一个重复的整数。假设nums只有一个重复的整数,返回这个重复的数。你设计的解决方案必须不修改数组nums且只用常量级O(1)的额外空间。示例1:输入:nums=[1,3,4,2,
- 2025-01-03ybt1677软件开发
1677:软件开发时间限制:1000ms内存限制:131072KB【题目描述】一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每个软件划分成\(m\)个模块,由公司里的技术人员分工完成,每个技术人员完成同一软件的不同模块的所用的天数是相同
- 2025-01-02自联接总结
SELECTam2.*,am.midassubmid,am.menunameassubmenuname,am.urlassuburl,am.glyphiconassubglyphiconfromadmin_menuaminnerjoinadmin_menuam2onam.pid=am2.mid用父表pid(父级字段)到子表mid进行匹配,用父表数据进行逐行匹配1.表结
- 2025-01-02myabtis 一对多实现原理(自连接)
在MyBatis中进行一对多映射时,确实需要通过resultMap来映射父对象和子对象的关系。你提到的“为了避免父对象重复插入”,实际上是指如何避免在查询结果中父对象重复创建。为了实现这一点,MyBatis提供了collection标签,可以在映射父对象时,把多个子对象聚合到一个父对
- 2025-01-02线段树总结
线段树你说的对,但线段树是一种用\(O(n\cdotlog\n)\)的大常数复杂度+略微的卡常下技巧=AC的妙妙数据结构。线段树是基于分治与二叉树的在线工具,可以维护区间信息,但比树状数组能够维护的东西更多。线段树虽然能够维护的东西更多,但也有一些特别显著的缺点:代码量过长。
- 2025-01-02路标设置(二分答案)
题目链接:https://www.luogu.com.cn/problem/P3853题意:给你一段长度,以及一些分割该长度的路标,允许加上k个路标让路标间距离变小,让你求两个路标之间最大的距离思路:二分答案,check时把注意力放在相邻的两个路标之间的距离看满不满足你二分出来的答案,如果不满足,就加上路标让其满足(注
- 2025-01-02深入了解分治 FFT
问题提出算法应用于问题,分治FFT的出现是为了解决这样一个问题:给定序列\(g_{1\dotsn-1}\),求序列\(f_{0\dotsn-1}\)。其中\(f_i=\sum_{j=1}^if_{i-j}g_j\),边界为\(f_0=1\)。具体可以见【模板】分治FFT-洛谷对于这个问题我们要求做到\(\Theta(n\log^2n)\)的
- 2025-01-02线段树从入门到出门
线段树详介(带lazy)线段树和树状数组不同,它维护的是一个个子序列。如上图,对于一个区间\([l,r]\),它的左儿子就是\([l,mid]\),右儿子就是\([mid+1,r]\),其中\(mid=\frac{l+r}{2}\)。我们可以给线段树上的每一个结点编号,假设父节点编号为\(x\),左儿子编号就是\(x\times
- 2025-01-01162. 寻找峰值
寻找峰值峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设nums[-1]=nums[n]=-∞。你必须实现时间复杂度为O(logn)的算法来解决此问题。示