摘要:
本文不讨论CDQ,平衡树维护凸包 斜率优化入门 我们讨论类似于以下的DP转移式($\max$同理) $f_i=\min \lbrace f_j+g(i)+h(j)+a(i)b(j)\rbrace$ 比较两个决策$j,k$,设$j>k$且优于$k$。 得到不等式: $$f_j+h(j)+a(i)b(j 阅读全文
摘要:
今天学习了单调队列优化DP,其模型为: $$f_i=\min/\max_{L(i)\le j\le R(i)}\lbrace kf_j+val(i,j)\rbrace$$ 其中$L,R$是具有单调性的函数,$val(i,j)=h_1(i)+h_2(j)$,是分别关于$i,j$的函数之和。 其原理在于 阅读全文
摘要:
Trie树简单应用 首先,Trie的思想很容易理解,一张图解释一切: 也即:字符集有多大,则开多少倍空间。 在实现上,我们用边来存储字符,然后开一个数组表示当前节点是否是一个字符串的结尾即可。 #include<bits/stdc++.h> using namespace std; #define 阅读全文
摘要:
选数 题解 首先,设最初取值为$x$,按照套路,我们设异或前缀和:$pre_i=a_1\oplus a_2…\oplus a_i$,设$f(x)=\left(\left\lfloor\frac{2x}{2^n}\right\rfloor+2x\right)\bmod 2^n$ 注意到:$0\le a 阅读全文
摘要:
Magic题解 题意简述: 给定$n$个数$a_1,a_2,…,a_n$,设对于数$x$,$|x|$表示其在十进制下的位数,也即$10^{|x|}\le x<10^{|x|+1}$ 需要计算: $$\sum_{i=1}^n\sum_{j=i+1}^na_i\oplus a_j$$ 数据范围: $n\ 阅读全文
摘要:
Dynamite 给一棵树,树上有一些关键节点,要求你选 $m$ 个点,第 $i$ 个关键节点到这些点中每个点距离的最小值记为 $dis_i$,记这全部 $dis$ 的最大值为 $K$,现在要使 $K$ 最小,求这个 $K$。 $n,m\le 3\times 10^5$ 分析 最大的最小,套路式二分 阅读全文
摘要:
GSS2 题意:给定序列$a$,若干次询问,求区间最大去重子段和。 询问次数与序列长度在1e5级别。 分析 超级神题。 在线算法,发现维护去重似乎非常困难,考虑将序列离线下来。有了这个离线的条件,由于没有修改操作,我们就可以考虑对询问顺序开始~~魔改~~处理了。 1e5常见的做法无非三种可能:$O( 阅读全文
摘要:
三选一化二叉 套路概述 这个套路是针对某一建模题的。 三选一其实可以扩展到N选一,模型具体如下。 发现某种状态可以扩展出$N$个状态,且有一个状态相较而言比较特殊(如其他状态都是扩张,仅有这个是收缩)的时候,可以考虑建立起一棵树,以当前状态为节点,特殊状态为父节点,其余状态为子节点。将问题转化到树上 阅读全文
摘要:
离线操作 离线操作相较于在线操作而言多出了很多操作空间。目前笔者遇见的离线操作套路基本有: 将删边离线倒序变为加边 常用于图论,与一些维护连通性的数据结构配合使用 可以扩展到区间的去重维护等问题,例如去重便可以离线下来变成插入,此时仅仅需要考虑可以对哪些地方产生贡献 2. 将(一般是静态)区间操作进 阅读全文
摘要:
跳跳棋是在一条数轴上进行的。棋子只能摆在整点上。每个点不能摆超过一个棋子。我们用跳跳棋来做一个简单的游戏:棋盘上有三颗棋子,分别在 $a,b,c$这三个位置。我们要通过最少的跳动把他们的位置移动成$x,y,z$ (注意:棋子是没有区别的)。 跳动的规则很简单,任意选一颗棋子,对一颗中轴棋子跳动。跳动 阅读全文