08 2021 档案

摘要:题意 给定一棵树,从一个点可以走到距离不超过2的其他点(包括自己),有若干个终点,问以某个点当起点的期望步数。 思路 我们设 \(E(u)\) 为从 \(u\) 点开始走的期望步数,容易得到 $ E(u)=\frac{E(gfa(u))+E(fa_{u})+\sum_{v\epsilon bro_{ 阅读全文
posted @ 2021-08-25 07:33 zJx-Lm 阅读(131) 评论(1) 推荐(0)
摘要:我们令 \(dp_i\) 表示正常处理完 \(i\) 子树节点的最优步数 转移时我们分两种情况 该根节点的每个子节点之间没有联系 直接将 \(dp\) 数组相加即可。 第二种情况就是有联系,该情况可以再分两种情况 存在一点的 \(dp\) 值小于从该节点向下找一遍再返回的步数,那么我们就可以根据这条 阅读全文
posted @ 2021-08-20 09:33 zJx-Lm 阅读(81) 评论(0) 推荐(0)
摘要:很神奇的 \(dp\) 题。 我们观察到 \(k^2\) = \(\binom{k}{2}×2\) + \(k\)。 实际上我们可以把问题转化为求一个数 \(x\) 有几次出现以及在每个序列任选两个 \(x\) 的总方案数。 定义: \(f_{i,j}\) : 序列的前缀最大值为 \(j\),长度为 阅读全文
posted @ 2021-08-19 06:35 zJx-Lm 阅读(84) 评论(0) 推荐(1)
摘要:思维量爆炸的一道题,不知道思路是怎么想到的(留坑)....直接讲解法吧 我们先考虑给 \(c\) 序列选数,令 \(dp_{i,j,k}\) 表示 \(a\) 序列处理到第 \(i\) 位,\(b\) 序列处理到第 \(j\) 位,还剩 \(k\) 个 \(c\) 序列的位置不确定选什么数,为了方便 阅读全文
posted @ 2021-08-15 21:45 zJx-Lm 阅读(102) 评论(0) 推荐(1)
摘要:点分治 (: 今天考到了,刚被迫学的,所以有解释不太对的地方还请指教。) 一种高效的优化方式, @ICEY :“ 在执行完点分治的操作后,新图中两点的lca一定在原图中两点间的简单路径上。 ” 在点分治优化完后,新图大致被分为 \(log\) 层, 若把原图看为一个序列,我们每次把中点当成我们新的分 阅读全文
posted @ 2021-08-13 21:45 zJx-Lm 阅读(84) 评论(0) 推荐(0)
摘要:我们可以直接模拟出归并的形式, 因为数的范围比较小,具体的,我们设 (概率数组) \(dp_{i,j,0/1}\) : 表示对于具体的一个数在该次归并中,在左区间选了 \(i\) 个,右区间选了 \(j\) 个且最后一个选的是 左/右 区间的数。 \(rk_{i,j}\): 表示在 \(i\) 位置 阅读全文
posted @ 2021-08-13 20:39 zJx-Lm 阅读(82) 评论(0) 推荐(0)
摘要:多源最短路 顾名思义,我们开始有多个源头,然后跑最短路。 其中的 \(dis\) 数组记录的是该点到任意源点的最短距离。 然后这道题就迎刃而解了,我们枚举路径, 对于路的端点找 \(pre\) 数组,对答案取 \(min\) 即可。 code: #include <bits/stdc++.h> #d 阅读全文
posted @ 2021-08-12 20:30 zJx-Lm 阅读(78) 评论(0) 推荐(0)
摘要:裸的线段树,这里不再讲方程的转移实现,主要证明一下按照和排序的正确性。 对于 \(j\) 我们希望 \(i\) 再其的前面。格式化的,对于 \(a_{i}\leq b_{j}\) 且 \(b_{i}\leq a_{j}\) ,我们期望 \(i\) 排在 \(j\) 的前面。 为什么要 \(b_{i} 阅读全文
posted @ 2021-08-12 20:20 zJx-Lm 阅读(73) 评论(0) 推荐(0)
摘要:一道扩欧板子。实际上就让我们解 \(n\) 个 \(ax+by=c\) 形式的方程,方程有解当且仅当 \((a,b)|c\)。 再回忆一下扩欧吧 对于一个扩欧方程 ,我们解的答案仅是满足 \(ax+by=(a,b)\) 形式的,要想转变为上述形式,等式左右同除 \((a,b)\) 再乘 \(c\) 阅读全文
posted @ 2021-08-12 19:58 zJx-Lm 阅读(90) 评论(0) 推荐(0)
摘要:从DP到组合数到DP套组合数再到放弃... 神仙能想出来的思路... 我们设 \(dp_{i,j,{0/1},{0/1}}\) 表示长度为 \(i\) 的序列在不大于 \(j\) 步被消完的方案数,其中左边的 \(0/1\) 表示左边是否有边界(比当前序列的所有数都大或整个序列的边界),右边同理。 阅读全文
posted @ 2021-08-12 19:31 zJx-Lm 阅读(89) 评论(1) 推荐(0)
摘要:T2 稀有算法 : 树剖 。 虽说过不了,但能打出来就好 考场时就86,到现在还是86,实在卡不动了... 代码能力++ 这里不做树剖讲解,仅作留念。(下文讲正解) 有兴趣的 \(oler\) 可以自行尝试 #include <bits/stdc++.h> #define re register # 阅读全文
posted @ 2021-08-09 20:54 zJx-Lm 阅读(66) 评论(0) 推荐(0)
摘要:虽然不清楚是不是那两人的力量 在那个风暴肆虐的夜晚,的确有一瞬 真的在那一瞬间,在云破天开的时候 透过空隙中看到的璀璨星空,不知为何倒映眼中不能忘怀 ” ——《奇迹召唤星辰》 时空轮回,我们回到xm的仲夏夜,在行星运动之前,我们掌握了他们的运动规律。 在一个行星湮灭之后,恰好构成了上个行星湮灭时的序 阅读全文
posted @ 2021-08-08 21:14 zJx-Lm 阅读(78) 评论(0) 推荐(0)
摘要:思路挺新奇的,算法的名字也挺好听的: 同余最短路。 我们令 \(dp_{i,j,v}\) 为选到第 \(i\) 个物品,其中选了 \(j\) 件限制物品,所选物品总体积% \(v_{min}\) 意义下为 \(v\),所选物品的最小实际总体积。 判断时用 \(dp[i][j][w\%v_{min}] 阅读全文
posted @ 2021-08-08 20:50 zJx-Lm 阅读(68) 评论(0) 推荐(0)
摘要:本场考试最有意义的一道题,思路根据题解和 ICEY 钻研了好久但最后分道扬镳了,写篇题解纪念一下。 先构造出最终状态,最后的状态一定是 \(1\) 到 \(n\) 的一条链,并且不在链上的每个联通块最多只和链上的一个点有连边。 形如: 我们定义状态: \(dp_{u,s}\) 为当前链的末端点为 \ 阅读全文
posted @ 2021-08-08 17:22 zJx-Lm 阅读(85) 评论(0) 推荐(0)
摘要:这道题思路比较新奇,题解用了一个质因子对的概念: 顾名思义,两个质数,且出现在序列中不同的数当中。 这有什么用呢? 我们可以通过判断新加入的数与原序列的质因子的集合并集中是否有这样的质因子对,来确定新加入的数是否符合条件。 具体来说就是,取 A{ 新加入的数的质因子 } & B{ 原序列的质因子 } 阅读全文
posted @ 2021-08-07 21:07 zJx-Lm 阅读(50) 评论(0) 推荐(0)
摘要:正解虚树,树剖等等等等。。。。 玄解 LCA,模拟等等等等。。。。 这里讲讲考场打的模拟算法。 顾名思义,模拟就是模拟传染,针对这道题(random题)进行了很优的优化。 主题代码 inline void find() { queue<int>s; while(!q.empty()) { int x 阅读全文
posted @ 2021-08-06 08:44 zJx-Lm 阅读(58) 评论(0) 推荐(0)
摘要:T1 Game 首先考试想到的直接找大于他最小的数,但按照最大字典序输出就炸了,但前几个数据比较水,得了几分辛苦分 这里我们用线段树维护现行答案: struct TREE_TABLE { #define lid (id<<1) #define rid (id<<1|1) struct TREE { 阅读全文
posted @ 2021-08-06 08:25 zJx-Lm 阅读(74) 评论(0) 推荐(0)