随笔分类 - __top-题解
摘要:题目链接 "loj2537" 题解 观察题目的式子似乎没有什么意义,我们考虑计算出每一种权值的概率 先离散化一下权值 显然可以设一个$dp$,设$f[i][j]$表示$i$节点权值为$j$的概率 如果$i$是叶节点显然 如果$i$只有一个儿子直接继承即可 如果$i$有两个儿子,对于儿子$x$,设另一
阅读全文
摘要:题目链接 "CF600E" 题解 容易想到就是线段树合并,维护每个权值区间出现的最大值以及最大值位置之和即可 对于每个节点合并一下两个子节点的信息 要注意叶子节点信息的合并和非叶节点信息的合并是不一样的 由于合并不比逐个插入复杂度高,所以应是$O(nlogn)$的 C++ include inclu
阅读全文
摘要:题目链接 "BZOJ2216" 题解 学过高中数学都应知道,我们要求$p$的极值,参变分离为 $$h_j + sqrt{|i j|} h_i \le p$$ 实际上就是求$h_j + sqrt{|i j|} h_i$的最大值 就可以设$f[i]$表示对$i$最大的该式的值 绝对值通常要去掉,一般可以
阅读全文
摘要:题目链接 "BZOJ2212" 题解 一棵子树内的顺序不影响其与其它子树合并时的答案,这一点与归并排序的思想非常相似 所以我们只需单独处理每个节点的两棵子树所产生的最少逆序对即可 只有两种情况,要么正序要么逆序,且这两种情况数目是互补的 如果左子树大小为$S_l$,右子树大小为$S_r$,那么总对数
阅读全文
摘要:题目链接 "CF487E" 题解 圆方树 + 树剖 裸题 建好圆方树维护路径上最小值即可 方点的值为其儿子的最小值,这个用堆维护 为什么只维护儿子?因为这样修改点的时候就只需要修改其父亲的堆 这样充分利用了一对一的特性优化了复杂度 如此询问时如果$lca$为方点,再询问一下$lca$的父亲即可 复杂
阅读全文
摘要:题目链接 "BZOJ1367" 题解 又是一道神题,, 我们考虑一些简单的情况: 我们先假设$b_i$单调不降,而不是递增 对于递增序列$\{a_i\}$,显然答案$\{b_i\}$满足$b_i = a_i$ 对于递减序列$\{a_i\}$,显然答案$\{b_i\}$满足$b_i$为$a_i$的中位
阅读全文
摘要:题目链接 "BZOJ5333" 题解 看到式子,立即想到二叉树上一个点及其$k$个父亲权值和【如果有的话】模$m$意义下为$0$ 考虑如何满足条件 我们假设$1$号为第$0$层 那么我们先满足第$k$层的条件 由于第$k + 1$层也满足条件 由同余的性质第$k + 1$层的权值等于第$1$层的权值
阅读全文
摘要:题目链接 "BZOJ1264" 题解 平凡的$LCS$是$O(n^2)$的 显然我们要根据题目的性质用一些不平凡的$LCS$求法 这就很巧妙了,, 我们考虑$A$序列的每个位置可能匹配$B$位置的哪些位置 而$A$序列中匹配的位置一定是单调递增的 那么我们就把$A$的每个位置所能匹配$B$的位置找出
阅读全文
摘要:题目链接 "URAL1519" 题解 看题型显然插头$dp$ 考虑如何设计状态 有这样一个方案 当我们决策到某个位置 轮廓线长这样 你会发现插头一定是相互匹配的 所以我们实际上可以把状态用括号序列表示 如上图就是( )() 是一个三进制数 那么我们设$f[i][j][s]$表示决策到$(i,j)$,
阅读全文
摘要:题目链接 "BZOJ5315" 题解 题目好吓人= =点仙人掌 + 斯坦纳树 我们只需求出对于所有选点的方案的斯坦纳树边长总和 $n$那么大当然不能状压,但是考虑一下如果这是一棵树,一个方案的贡献就是连接这些点的所有边 我们可以考虑计算每条边的贡献 一条边在树上有贡献,当且仅当它两端的树都存在被选择
阅读全文
摘要:题目链接 "洛谷P4608" 题解 建个序列自动机后 第一问暴搜 第二问dp + 高精 设$f[i][j]$为两个序列自动机分别走到$i$和$j$节点的方案数,答案就是$f[0][0]$ 由于空间卡的很紧,高精不仅要压位,还要动态开内存 由于有些状态是没用的,记忆化搜索以减少内存损失 C++ inc
阅读全文
摘要:题目链接 "洛谷P4606" 双倍经验: "弱化版" 题解 两点之间必经的点就是圆方树上两点之间的圆点 所以只需建出圆方树 每次询问建出虚树,统计一下虚树边上有多少圆点即可 还要讨论一下经不经过根$1$的情况 P4606 cpp include include include include inc
阅读全文
摘要:题目链接 "BZOJ3509" 题解 化一下式子,就是 $$2A[j] = A[i] + A[k]$$ 所以我们对一个位置两边的数构成的生成函数相乘即可 但是由于这样做是$O(n^2logn)$的,我们考虑如何优化 显然可以分块做,我们不对所有数左右求卷积,只对$B$个块左右做,这样$i$和$k$都
阅读全文
摘要:题目链接 "BZOJ3771" 题解 做水题放松一下 先构造$A_i$为$x$指数的生成函数$A(x)$ 再构造$2A_i$为指数的生成函数$B(x)$ 再构造$3A_i$为指数的生成函数$C(x)$ 那么只需计算 $$A(x) + \frac{A^2(x) B(x)}{2} + \frac{A^{
阅读全文
摘要:题目链接 "BZOJ4735" 题解 给定一个序列,有的位置为$w_i 1$,有的位置为$ 1$,问有多少种排列,使得任意前缀和非负? 我们末尾加上一个$ 1$,就是要保证除了末尾外的前缀和非负 我们考虑把所有元素进行圆排列,对于一个圆排列,无论从哪个位置断开,最小值的位置是固定的 最小值显然必须是
阅读全文
摘要:题目链接 "BZOJ2595" 题解 著名的斯坦纳树问题 设$f[i][j][s]$表示点$(i,j)$与景点联通状况为$s$的最小志愿者数 设$val[i][j]$为$(i,j)$需要的志愿者数 有两种转移 一种是自己转移 $$f[i][j][s] = min\{f[i][j][e] + f[i]
阅读全文
摘要:题目链接 "BZOJ5314" 题解 设$f[i][j][0|1][0|1]$表示$i$为根的子树,用了$j$个监测器,$i$节点是否被控制,$i$节点是否放置的方案数 然后转移即可 $O(nk^2)$?? 用上子树大小来优化就是$O(nk)$的 对于子树大小都超过$k$的子树,转移$O(k^2)$
阅读全文
摘要:题目链接 "洛谷P4559" 题解 只会做$70$分的$O(nlog^2n)$ 如果本来就在区间内的人是不用动的,区间右边的人往区间最右的那些空位跑,区间左边的人往区间最左的那些空位跑 找到这些空位就用二分 + 主席树 理应可以在主席树上的区间二分而做到$O(nlogn)$,但是写不出来,先留着坑
阅读全文
摘要:题目链接 "BZOJ3782" 题解 我们把终点也加入障碍点中,将点排序,令$f[i]$表示从$(0,0)$出发,不经过其它障碍,直接到达$(x_i,y_i)$的方案数 首先我们有个大致的方案数${x_i + y_i \choose x_i}$ 但是中途可能会经过一些其它障碍点,那么就减去 所以 $
阅读全文
摘要:题目链接 "洛谷P4630" 题解 看了一下部分分,觉得树的部分很可做,就相当于求一个点对路径长之和的东西,考虑一下能不能转化到一般图来? 一般图要转为树,就使用圆方树呗 思考一下发现,两点之间经过的点双,点双内所有点一定都可以作为中介点 那么我们将方点赋值为点双大小,为了去重,剩余点赋值$ 1$
阅读全文

浙公网安备 33010602011771号