08 2022 档案
摘要:###NOIP2021数列 ###Analysis 先注意题目的关键点: 要满足$S = 2^{a_1} + 2^{a_2} + \cdots + 2^{a_n}$ 的二进制表示中 $1$ 的个数不超过 $k$ 一个合法数列的权值是一个 $v_{a_1} \times v_{a_2} \times
阅读全文
摘要:###降维方法 可持久化 条件:静态问题,且一般都是在线,因为可以离线的话,通常会用各方面更优的离线(分治)算法。 减少一个维度后,时间复杂度去掉一个log 对于二维问题,可持久化一维,如:二维数点用可持久化线段树在线维护 对于三维问题,选一个维度可持久化,即可持久化树套树,但不会写,应该不考。 扫
阅读全文
摘要:我们先把输入的点映射到一个排列,设$w(i,j)=[max(a_i,a_{i+1},\cdots ,a_j)-min(a_i,a_{i+1},\cdots ,a_j)=j-i]$,题目所求即为$\sum_{j=1}^n\sum_{i=1}^jw(i,j)$ 我们可以考虑扫描一维,比如右端点$j$,同
阅读全文
摘要:###补充 对于某一维限制如果是min(a,b),或者是max(a,b),可以分两种情况讨论然后用cdq解决这一维限制 ###概论 在OIwiki上可以看到cdq分治有三种不同的作用: 解决序列的点对问题 优化1D1D动态规划 将动态问题以多一个log代价,转化为静态问题。 但最本质的应该是第三个:
阅读全文
摘要:很厉害的题。在任务计划里躺了一年。。。 ###题目传送门 ###思考之路 题目要让我们在付出不超过m的代价在树上找到一个权值最大的连通块。 容易想到树形dp,设$f_{i,j}$表示选的连通块中深度最小的点为$i$,选的点的代价和为$j$的情况下喜爱度的最大值。 那么转移时,对树上的每个点做一次$(
阅读全文
摘要:###算法流程 一开始每个连通分量是一个点本身,每轮,每个连通分量选择和其他连通分量相连的最小的边,然后合并,可以证明最多log轮后,只会剩下一个连通分量,复杂度O(mlog n) 证明: 正确性是显然的,每个联通分量向外连出的最小的边,一定在最小生成树中。 然后考虑,每个连通分量选择和其他连通分量
阅读全文
摘要:###问题模型 有若干颗动态开点线段树,总点数为M,现有如果按操作,操作为某个线段树上的查询,获将两颗线段树合并,这里的合并通常是同一下标对应数相加(也可以是其他形式的合并如Minimax) ###算法流程 设函数Merge(x,y)表示合并x,y两棵子树,那么: 如果x为空,则直接返回y 如果y为
阅读全文
摘要:首先声明两个误区: 代价函数满足四边形不等式是dp具有决策单调性的充分不必要条件,所以通过打表,发现dp具有决策单调性不能说明代价函数满足四边形不等式 仅有dp的的决策点单调这一个条件是无法用二分+单调队列优化的,因为二分+单调队列优化需要满足一个条件:在新求出一个fi时,考虑i可以作为那些位置的最
阅读全文
摘要:###有向无环图游戏模型 把所有局面看做点,操作看做有向边,则整个游戏为一个DAG。 这个DAG有一个初始点,两个人轮流操作,每次操作可以选当前点的任意一条出边的终点作为新的当前点。最终无法移动的人输。 ###证明博弈论的基本思路: 将所有局面划分为两个集合,一类对应先手必败,一类对应先手必胜。 证
阅读全文
摘要:虽然挺简单的,但用的不多的话,挺容易忘。 ###问题模型: 给定一个数论函数$f$,定义$S_f(n)=\sum_{i=1}^nf(i)$ 要求在低于线性的时间复杂度求出$S_f(n)$ ###基本原理: 构造一个数论函数$g$,令$h=f*g$ 可以得到 $S_f(n)=\frac{1}{g(1)
阅读全文

浙公网安备 33010602011771号