随笔分类 - __top-题解
摘要:题目链接 "BZOJ2671" 题解 令$d = (a,b)$,$a = dx,b = dy$ 那么有 $$ \begin{aligned} d(x + y) | d^2xy \\ (x + y) | dxy \end{aligned} $$ 由于$x \perp y$,所以 $$(x + y) |
阅读全文
摘要:题目链接 "CF993E" 题解 我们记小于$x$的位置为$1$,否则为$0$ 区间由端点决定,转为两点前缀和相减 我们统计出每一种前缀和个数,记为$A[i]$表示值为$i$的位置出现的次数 那么对于$k 0$有 $$ans_k = \sum\limits_{x y = k} A[x]A[y]$$
阅读全文
摘要:题目链接 "BZOJ5058" 题解 可以发现任意两个位置$A,B$最终位置关系的概率是相等的 如果数列是这样: CCCCACCCCBCCCC 那么最终有$7$种位置关系 $(A,B)$ $(A,C)$ $(B,A)$ $(B,C)$ $(C,A)$ $(C,B)$ $(C,C)$ 手玩出$7 \t
阅读全文
摘要:题目链接 "洛谷P4233" 题解 我们只需求出总的哈密顿回路个数和总的强联通竞赛图个数 对于每条哈密顿回路,我们统计其贡献 一条哈密顿回路就是一个圆排列,有$\frac{n!}{n}$种,剩余边随便连 所以总的贡献为 $$(n 1)!2^{{n \choose 2} n}$$ 我们只需求出总的强联
阅读全文
摘要:题目链接 "BZOJ4727" 题解 前置芝士 1.竞赛图存在哈密顿路径 2.竞赛图存在哈密顿回路,当且仅当它是强联通的 所以我们将图缩点后,拓扑排序后一定是一条链,且之前的块内的点和之后块内的点的边一定全都由前面指向后面 而每个块都是强联通的,所以我们从起点出发,一定能找到一条路径走完后面所有点
阅读全文
摘要:题目链接 "BZOJ5305" 题解 妙啊 要求的是所有可能的树形的所有点对距离和 直接考虑点的贡献肯定想不出,这样的所有点对距离问题通常转化为边的贡献 考虑一条边会产生多少贡献 我们枚举$i$节点的父亲边 首先我们认识到一点,按照题中所给的生成树的方式,$n$个节点的树有$n!$种形态 我们枚举了
阅读全文
摘要:题目链接 "UVA10498" 题解 模板题 cpp include include include include include include include include include define LL long long int define REP(i,n) for (int i
阅读全文
摘要:题目链接 "BZOJ4868" 题解 最后的答案决定于最后一个公布的成绩 显然这个是答案关于这个时间点是呈凸单调的 三分一下这个时间点 时间点固定,在这个时间前的人都会产生不愉快度,在这个时间前的科目可以往后挪 我们只需贪心选择在这个时间后的科目按哪种方式往前挪 复杂度$O(nlogn)$ cpp
阅读全文
摘要:题目链接 "BZOJ4870" 题解 $$ans = \sum\limits_{i = 0}^{\infty}{nk \choose ik + r} \pmod p$$ 发现实际是求 $$ans = \sum\limits_{i = 0}^{\infty}{nk \choose i}[i \mod
阅读全文
摘要:题目链接 "BZOJ4919" 题解 链上的$LIS$维护一个数组$f[i]$表示长度为$i$的$LIS$最小的结尾大小 我们可以用$multiset$来维护这个数组,子树互不影响,启发式合并 一个点取更新数组时,只会改变第一个比它大的地方,因为这个点一定是将比它小的位置$+1$,只有$+1$后位置
阅读全文
摘要:dsu on tree 说白了就是树上启发式合并,基于树剖 适用于不带修改的子树信息查询 复杂度$O(n \log n)$ 例题 "CF600E" 对于每个点,暴力统计轻儿子子树信息,最后再统计重儿子 如果该点为重儿子,保留信息 否则再做一遍清空信息 由于每个点到根只有$O(\log n)$条轻边,
阅读全文
摘要:题目链接 "CF739E" 题解 抓住个数的期望即为概率之和 使用$A$的期望为$p[i]$ 使用$B$的期望为$u[i]$ 都使用的期望为$p[i] + u[i] u[i]p[i]$ 当然是用越多越好 但是他很烦地给了个上限,我们就需要作出选择了 有一个很明显的$O(n^3)$的$dp$,显然过不
阅读全文
摘要:自适应辛普森积分 非常简单而自欺欺人的一个东西,,就是拿积分区间中的端点和中点去模拟函数,如果分成两段积与分成一段积差别不大,就认为是这段的积分了 具体地,对于区间$[l,r]$,我们认为它的面积为 $$S = \frac{(r l)(f(l) + 4f(\frac{l + r}{2}) + f(r
阅读全文
摘要:题目链接 "BZOJ4036" 题解 好套路的题啊,,, 我们要求的,实际上是一个集合$n$个$1$中最晚出现的$1$的期望时间 显然$minmax$容斥 $$E(max\{S\}) = \sum\limits_{T \subseteq S} ( 1)^{|T| + 1}E(min\{T\})$$
阅读全文
摘要:题目链接 "BZOJ3688" 题解 将点排序 设$f[i][j][0|1]$表示以第$i$点结尾,有$j$段,最后一段上升或者下降的方案数 以上升为例 $$f[i][j][0] = \sum\limits_{k = 1}^{i 1}\sum\limits_{y_k include include
阅读全文
摘要:题目链接 "hdu6057" 题意 给出序列$A[0...2^{m} 1]$和$B[0...2^{m} 1]$,求所有 $$C[k] = \sum\limits_{i \; and \; j = k} A[i \; xor \; j]B[i \; or \; j]$$ 题解 我只能感叹太神了 看到题
阅读全文
摘要:题目链接 "洛谷P3676" 题解 我们先维护$1$为根的答案,再考虑换根 一开始的答案可以$O(n)$计算出来 考虑修改,记$s[u]$表示$u$为根的子树的权值和 当$u$节点产生$v$的增量时,只影响$1$到$u$路径上的$s$,权值和都$+v$ 而对答案的影响是 $$ \begin{alig
阅读全文
摘要:题目链接 "CSU1911" 题解 FWT模板题 cpp include include include include include include include include include define LL long long int define REP(i,n) for (int
阅读全文
摘要:题目链接 "CF662C" 题解 行比较少,容易想到将每一列的状态压缩 在行操作固定的情况下,容易发现每一列的操作就是翻转$0$和$1$,要取最小方案,方案唯一 所以我们只需求出每一种操作的答案 如果操作的行的集合为$S$,那么对于状态为$e$的列,将会变成$e \; xor \; S$,同时产生$
阅读全文
摘要:题目链接 "hdu5909" 题解 设$f[i][j]$表示以$i$为根的子树,$i$一定取,剩余节点必须联通,异或和为$j$的方案数 初始化$f[i][val[i]] = 1$ 枚举儿子$v$转移 $$f[i][j] = f[i][j] + \sum\limits_{x \; xor \; y =
阅读全文

浙公网安备 33010602011771号