- 博客(19)
- 收藏
- 关注
原创 一道经典题的算法证明
Tree I题目:给定一个无向带权连通图,每条边是黑色或白色。试求恰好有条kkk黑色边的生成树的最小权值和。(By WJMZBMR)一些记号f(x)≔f(x)\coloneqqf(x):=恰好有xxx条黑色边的生成树的最小权值和S(x)≔S(x)\coloneqqS(x):=所有黑色边权值加上xxx之后的MST的值凸函数性质讨论直觉上,fff应该是函数的,因此先探讨下假如fff是凸函数时具有哪些性质。将所有(x,f(x))(x,f(x))(x,f(x))用直线连接起来,可以得到一个凸包。
2021-07-30 00:54:19
215
原创 可持久化线段树总结
普通的可持久化线段树的用法就是利用动态开点,在一次修改中只新建有修改的结点,从而实现可以调用某次修改前的线段树。例如在单点修改中,每次更改的最多只有线段树的一条链,则修改需要的时间复杂度与空间复杂度均为O(logN)O(\log N)O(logN)。可持久化线段树也有一些拓展用法,例如较常见的可持久化权值线段树。求逆序对个数常见的一种做法即建立权值线段树(or树状数组)。回顾一下这个做法的思想,用一个线段树去维护询问可能出现的权值的信息,在这个问题中是动态维护[1,cur−1][1,cur-1][1,c
2021-06-11 14:14:10
369
原创 简析树上倍增
树上倍增,可在树的某条链上随深度具有某种单调的性质时进行查找,使时间复杂度从暴力查找的O(N)O(N)O(N)变为O(logN)O(\log N)O(logN)。树上倍增需要构建数组f[N][⌈logN⌉]f[N][\left \lceil \log N \right \rceil ]f[N][⌈logN⌉],其中f[n][i]f[n][i]f[n][i]代表的是从结点nnn向根节点方向走2i2^i2i步到达的结点。很显然,f[n][0]f[n][0]f[n][0]即结点nnn的父节点,在建图时即可
2021-06-06 15:15:18
351
原创 splay区间操作
splay是平衡树的一种,但其更广泛的应用是进行对区间的操作,在熟悉了splay平衡树的一系列操作之后,就可以开始探究其区间操作了。splay运用在区间操作上时,每个结点都对应区间上的一个点,每个子树都对应一段区间。而splay可以当作区间树的根本原因是“旋转操作不改变splay的中序遍历序列”,因此要对一段区间进行操作时,只需要通过一系列旋转,使某个子树对应该段区间即可。这时候,满足二叉搜索树性质的是该结点对应的点在区间中的位置,但这个数据并不需要储存在splay树上。首先考虑如何将一段区间对应到一
2021-05-28 15:26:33
1057
原创 图的删边处理
由于能处理图删边的工具较少,通常在遇上要对图删边的问题时,将其转化为添边处理。例如:Graph and Queries题意:给定一个无向图,每个点具有权值。有三种操作:删除一条边(保证一条边至多被删除一次);计算与xxx连通的点中,第kkk大的权值,若不存在则输出0;结点xxx权值变为vvv。求经过一系列操作好,所有第二类操作的输出的平均值。思路:由于只有删边没有添边,可以将操作记录下来离线处理。按所有删边操作之后的结果建图,再对原来的操作逆向进行,删边就转化成了添边,用邻接表储存即可。AC代
2021-05-17 21:00:13
1440
原创 多路归并问题(多个有序表合为一个有序表)
给定k个有序表(不妨假设均为升序),求这k个有序表中最小的n个元素,这类问题称为多路归并问题。对于这类问题,考虑先取出每个有序表中的最小的元素,在取出的这些元素中的最小值即为所有元素的最小值,必然要被选中。根据每个表的有序性,在某个元素的前一个元素未被选中时,该元素必定不会被选中。因此,每次选中了一个元素后,它的后一个元素才会被考虑。所以在上述第一批取出的k个元素中,先取出最小的一个,再将其后一个元素加入待选取的元素中,然后考虑新的待选取元素的集合,选取其中最小的元素,以此即可选出第二小的元素。从而可
2021-04-25 16:10:45
593
原创 处理图形位于两条不交叉曲线之间的面积
若需要计算图形位于两条曲线S1,S2S_1,S_2S1,S2之间的面积,并且两条曲线是不交叉的,则可以分别计算位于S1S_1S1下的面积和位于S2S_2S2下的面积即可。例如Joining with Friend题意:一辆火车会在时间区间[t1,t2][t_1,t_2][t1,t2]内以相同的概率密度到达车站,另一辆火车会在时间区间[s1,s2][s_1,s_2][s1,s2]内以相同的概率密度到达车站。若火车到站会停靠www单位时间,求出现两火车同时在车站的概率。思路:题目可以转
2021-04-20 19:41:27
237
原创 带优先级的多最值目标问题
给定一系列目标a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an,考虑在满足a1a_1a1取最值的情况下a2a_2a2取最值,再在此情况下a3a_3a3取最值,以此类推,将此类问题归为带优先级的多最值目标问题。因为不同变量之间可能具有关联,所以不能简单的分开求最值。本文仅考虑a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an均为离散变量且除a1a_1a1外均有界,不妨设ai∈Za_i\in \Zai∈Z。事实上,一些取最大值的目
2021-04-08 20:00:26
432
原创 中途相遇法/折半搜索
对于一些搜索问题,可以将搜索过程分为两部分进行分别搜索,得到两个答案序列,再将两个答案序列进行合并,从而得到最终答案。例如,在搜索的每一个结点都有两种选择,那么搜索的时间复杂度为O(2n)O(2^{n})O(2n),假如使用折半搜索,则时间复杂度将变为O(2n2)O(2^{\frac{n}{2}})O(22n)加上合并操作的时间复杂度。因此,折半搜索通常用在答案序列易合并的情况。例如Jurassic Remains题意:给定n个由大写字母组成的字符串(n≤24)(n\leq 24)(n≤24),试
2021-04-06 16:07:45
356
原创 Stone Games
题目链接Stone Games题意:给定n个正整数s1,s2,...,sns_{1},s_{2},...,s_{n}s1,s2,...,sn,有q次询问,每次询问输入li′,ri′l'_{i},r'_{i}li′,ri′,设第i次询问得到的答案是ansi−1ans_{i-1}ansi−1(特殊地,ans0=0ans_{0}=0ans0=0),令li=min{(li′+ansi−1)%n+1,(ri′+ansi−1)%n+1},ri=max{(li′+ansi−1)%n+1,(ri′+an
2021-04-05 20:13:57
195
原创 浮点计算问题转化成整数计算问题
在某些看似涉及浮点计算的问题中,其实可以通过一些手段转化成整数计算问题,从而保证精度。例如POJ3347题意:依次给出n个正方形的边长,要求在第一象限内依次放入正方形,满足:①放入第i个正方形时,第i个正方形与前面的正方形都不重合;②放入正方形时,要求一个顶点在x轴上,且坐标值最小。求放完所有正方形后,从高处向下照射竖直平行光,未被完全遮挡的正方形的序号。思路:本题在求解时用到的数据是每个正方形覆盖的区间,即与正方形的斜对角线长度相关。而给出的正方形边长是整数,则斜对角线为一个整数乘上sqrt(2)。
2021-03-31 19:51:56
657
原创 斜率优化DP总结
斜率优化,即状态转移方程可转换成形如dp(i)=minj<i{f(j)−g(i)⋅h(j)}+ϕ(i)dp(i)=\min\limits_{j<i}\{f(j)-g(i)·h(j)\}+\phi(i)dp(i)=j<imin{f(j)−g(i)⋅h(j)}+ϕ(i)的形式。令y=f(j),k=g(i),x=h(j),b=dp(i)−ϕ(i)y=f(j),k=g(i),x=h(j),b=dp(i)-\phi(i)y=f(j),k=g(i),x=h(j),b=dp(i)−ϕ(i),即求所
2021-03-25 16:49:20
221
原创 2018牛客寒假多校第一场
Monotonic Matrix题意:输入n,m,求在一个n×m矩阵中填入{0,1,2},且保证每行每列都不下降的方案数。考虑这样一张网格图,向里面填入{0,1,2},由于每行每列都不下降,将图按填入的数字用分割线分开,那么{0,1},{1,2}之间的分割线必然都是从左下角到右上角的最短路径(即只会向左拐或者向上拐),否则无法保持单调性。又根据上图易看出:{1,2}分割线必须不在{0,1}分割线上方(可以有重合,否则也会破坏单调性。那么就可以由此建立模型:一张n×m的网格图,不妨令左下角坐标为(0
2021-01-25 14:45:24
390
原创 牛客2020跨年场全部题解
题目链接快速跳转牛牛想起飞最小互质数衔尾蛇牛牛的反函数开心消消乐CoolCool的序列牛清楚的裙子!!!牛牛想起飞n<=1e5,y<=100,可以用dp,定义dp[i][j]={1,变换后前n项和可以为j0,elsedp[i][j]= \begin{cases} 1, &\text{变换后前n项和可以为j} \\0, & \text{else} \end{cases}dp[i][j]={1,0,变换后前n项和可以为jelse就可以得到状态转移方程dp[i][j]
2021-01-01 17:04:14
399
原创 Can you answer these queries I
You are given a sequence A[1], A[2], …, A[N] . ( |A[i]| ≤ 15007 , 1 ≤ N ≤ 50000 ). A query is defined as follows:Query(x,y) = Max { a[i]+a[i+1]+…+a[j] ; x ≤ i ≤ j ≤ y }.Given M queries, your program must output the results of these queries.InputThe fir
2020-12-06 13:35:22
116
原创 Steady Cow Assignment
题意:n个牛找B个槽子,对于每个槽子有不同的满意度,槽子有容量限制,让所有牛找到自己的槽子,满意差距尽可能少思路:二分答案+二分图匹配注意:二分答案要注意上界下界,本题我的做法下界应该取0,取1会WA#include<iostream>#include<cstring>using namespace std;typedef long long ll;typedef double db;#define rep(i,s,t) for(int i=s;i<=t;i++
2020-12-01 21:33:03
136
原创 2020ICPC·小米 网络选拔赛第一场 全部题解
快速跳转题目类型A-Intelligent Warehouse题目类型A:DP+一点点数论(几乎不用)B:最短路+计算几何(判断线段相交)C:签到题D:图论(tarjan求连通块)E:数据结构(线段树)F:二分答案G:看着像图论,其实构造就行了H:数学推导I:搜索(标程好像是bfs,但我是用dfsA的)J:前缀和+差分K:数学A-Intelligent Warehouse给定一组数,选出最多的数,保证其中任意两个数有...
2020-11-20 21:04:05
898
原创 Spreadsheets
In the popular spreadsheets systems (for example, in Excel) the following numeration of columns is used. The first column has number A, the second — number B, etc. till column 26 that is marked by Z. Then there are two-letter numbers: column 27 has number
2020-10-27 17:31:45
208
原创 k-Tree
Quite recently a creative student Lesha had a lecture on trees. After the lecture Lesha was inspired and came up with the tree of his own which he called ak-tree.Ak-tree is an infinite rooted tree where:each vertex has exactlykchildren; each edge ...
2020-10-24 20:12:06
314
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人