03 2020 档案
摘要:设 a[i] 为二进制为 i 的列的数量, b[i] 为 i 二进制下前 n 位中 0/1 出现的较小值。 假设我们对列的修改状态为 i ,那么这时的 ans 为 ∑ja[j]×b[i⨁j]
阅读全文
摘要:题目不难,但是思路巧妙。 我们求出差分数组后,就变成了这三种操作 1.一个数加一 2.一个数减一 3.一个数加一的同时一个数减一 我们要让 2 ~ n 变成 0 ,设所有整数的和为 s1 ,负数的和的绝对值为 s2 ,则最少操作数为 max(s1,s2) 我们 $min(s
阅读全文
摘要:对于一段区间查询最大异或值,我们可以用 可持久化0/1Trie树 来维护。 对于一个点的子树,它们的 dfs 序是一段连续的区间。 对于一条路经,我们拆成两个端点分别到达 LCA 的两条路径,它们的 dep 是连续的。 我们分别建出来 1.以 dfs 序为外层的树 2.以 dep
阅读全文
摘要:设 f[n][k] 为 n 个人第 k 个人胜利的概率。初始化 f[n][1]=1 第一个人要想赢的话第一枪不能中,然后他就相当于成了 n 个人里的第 n 个,f[n][1]=(1P0)×f[n][n] 对于其他人,如果第一个人中了,就转移到了 $f[n
阅读全文
摘要:首先说明一点:平方的期望 不等于 期望的平方,三次方也一样 设 f[i] 为只考虑前 i 个时的答案 若当前格子为 0 ,不会造成额外贡献。 若当前格子为 1 ,概率为 p[i] ,造成的贡献为 $E(len_i^3)=E((len_{i 1}+1)^3)=E(len_{i 1}
阅读全文
摘要:题目大意 给定 x,y ,求有多少个数列满足其 gcd 为 x ,和为 y。 题解 设 k=x/y,若 k 不是整数则无解。否则就是求和为 k ,gcd=1 的序列个数 容斥考虑: 首先和为 k 的所有序列一共有2k1 个。 若 gcd!=1 则应
阅读全文
摘要:题目大意 给出一个图,每条边都有一定概率出现,问最后出现一棵树的概率。 题解 我们平时矩阵树定理所求的就是∑T∏e∈TVale 其中T是树,e是边。 这道题我们要求的就是 $\displaystyle \sum_{T}
阅读全文
摘要:无源汇有上下界可行流 int main() { cin >> n >> m; S = 0; T = n + 1; for (int i = 1; i <= m; ++i) { x = read(); y = read(); L[i] = read(); r = read(); ADD(x, y, r
阅读全文
摘要:DP 一个值得思考的 DP 题。 设 f[i][j] 为前 i 个中选了 j 次的方案数, g[i][j] 为前 i 个中选了 j 次的所有方案的价值积的和。枚举上一个选取的位置和次数即可. O(n2k2) 20分 空间也会爆炸
阅读全文
摘要:```cpp #pragma GCC diagnostic error "-std=c++11" #pragma GCC target("avx") #pragma GCC optimize(3) #pragma GCC optimize("Ofast") #pragma GCC optimize("inline") #pragma GCC optimize("-fgcse") #pragma G
阅读全文
摘要:一个长度为 n 字符集大小为 k 的字符串,它的回文串的个数是 k⌈n2⌉ 发现根据题目里给的操作二, 可以生成 最小循环节的长度 个满足条件的字符串, 用这个长度的字符串拼出来长为 n 的字符串必须是回文串 设这个长度为 l,满足
阅读全文
摘要:记忆化搜索 既然需要出现的次数 ≥ 长度的一半,我们不妨就枚举这个数,按照记搜的套路,我们记录一下这个数的出现次数以及是否没了前导零即可。 记录次数的时候如果往后添的数是枚举的数,则 ++cnt ,否则 cnt ,易证符合条件当且仅当 pos=0 时 cnt ≥
阅读全文
摘要:分块 题目大意 给定 n 个数 a1 ~ an ,求最大的 d , 满足 n∑i=1d((ai1)%d+1)≤k 首先我们看到取模很难化简式子,考虑用除法代替。 $\displaystyle nd \sum_{
阅读全文
摘要:结论题 其实没那么难,只不过真的被附加说明给恶心到了。 首先我们将相乘的数连边,能看出来会形成几个环,显然环与环之间互不影响。 然后易证一共有 gcd(n,k) 个环,每个环里就有 ngcd(n,k) 个数,显然我们给每个环分配的数连续更优。 关于一个环里怎么分配:我们 看
阅读全文
摘要:矩阵树定理 想必大家应该都会高斯消元吧,不会的话可以看 "模板" ,我们现在着重讲一下建矩阵的方法。 前置知识:我们用到的矩阵,也就是基尔霍夫矩阵的任意一个代数余子式是所有生成树的边权积的和。 当所有边边权为1时求的就是生成树的个数了。 我们以下设 (x,y,z) 为 x 到 y 有一条
阅读全文