随笔分类 - 算法合集 / 杂项
摘要:问题引出: 给出 \(n\) 个点的树,求出分别以不同的 \(i\) 为根时,所有结点深度的和,根节点的深度为 \(0\)。 首先我们有个自然的暴力思路, 也就是以每个节点为根节点做一遍 \(dfs\) 这样的复杂度是 \(O(n^2)\) 级别的, 所以要进行优化 看下图: 我们首先假设每个节点具
阅读全文
摘要:本章对标:D - Three Days Ago 问题非常简单,也就是求出所有连续区间且这个区间内的数字都出现了偶数次的总合法区间数 那么很明显有中 \(O(n^2)\) 的算法,但复杂度不够,那么枚举区间不行,从别的方面入手,考虑到每个字符只能是数字,那么我们此时可以将其转化为一个二进制串,表示的含
阅读全文
摘要:对于树上的两点之间的简单路径,求经过边权值的最大异或和 首先考虑一个点到根节点所经过路径的异或和,可以深搜求出 考虑两点简单路径的异或和,其值一定是两个点分别到根节点的异或和的异或,那么此时我们已知一个点,如果求出另一个点使得两点之间的异或和最大呢? 考虑字典树存取,深搜完之后,将每个点到根节点的异
阅读全文
摘要:这是我做 AtCoder 的时候发现的一个问题,有感而发: 首先,对于任何一个数,我们都能给它做质因数分解,也就是把他们分成一个个质因数的平方乘 现在考虑一个非完全平方数,就假如它分解质因数之后的形式为: 25∗34∗57 那么我们把他的平方数进行模 \(2\) 操作之后就变成了: 21∗30∗52
阅读全文
摘要:$ kmp $ 想必大家都不陌生,这里先贴个模板hh 从0开始: for (int i = 1, j = 0; i < s2.length(); i++) { while (j && s2[i] != s2[j]) j = ne[j - 1]; if (s2[i] == s2[j]) j++; ne
阅读全文
摘要:见题:E - Digit Sum Divisible (atcoder.jp) P4127 [AHOI2009] 同类分布 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 考虑数位动规,设方程 $dp[i][j][k][l]$ 为状态:$i$:搜到了第 $i$ 位(倒着枚举,也就是
阅读全文
摘要:例如:当前数字只能由1,4,5构成,问在所有的数中,满足这种性质的第n个数是多少 考虑进制:数字只能由1,4,5构成,换句话来说和只能由0,1,2构成同理,只不过最后是把012换成了145 所以可以直接把这个数换成3进制,然后对应输出即可,任何相关的都可以用进制来解决 C - Even Digits
阅读全文
摘要:如何判断某个位置是不是LIS或者反LIS的数? 笔者是在前几天的abc354这一场的f题发现的,最长上升子序列很显然,我们在求的过程中,设 \(dp[i]\) 为以i位置结尾的最长上升序列的长度,然后求一边所有的最长长度即可,那么对于这种定义,我们考虑一个反定义,即:\(dp2[j]\) 为以j位置
阅读全文