摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ440.html 前言 菜鸡选手到省选了才做联赛题。 题解 首先我们分析一下性质: 1. 假如一个格子是 0,那么它的右上角一定是 0 。 2. 假如一个格子的左边和上面两个格子一样,那么从这个格子到终点的任何两条路径相同。 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/Burnside-Polya.html 问题模型 有一个长度为 $n$ 的序列,序列中的每一个元素有 $m$ 种取值。 如果两个序列循环同构,那么我们称这两个序列等价。 求两两不等价的序列个数。 Burnside引理 假设有若干个 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/CF438E.html 前言 没做过多项式题,来一道入门题试试刀。 题解 设 $a_i$ 表示节点权值和为 $i$ 的二叉树个数,特别的,我们定义 $a_0 = 1$ ,即我们认为没有节点也算一种二叉树。 设 $$g(x) = \ 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/Berlekamp-Massey.html 前言 BM算法用于求解常系数线性递推式。 它可以在 $O(n^2)$ 的时间复杂度内解决问题。 由于许多问题会涉及线性递推,所以 BM 算法将会有不错的应用。 问题模型 给定一个有 $n 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ335.html 前言 CLY大爷随手切这种题。 日常被CLY吊打系列。 题解 首先从 pruffer 编码的角度考虑这个问题。 pruffer 编码的长度为 $n-2$ ,如果点 $i$ 在 pruffer 编码中出现了 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ73.html 前言 纯属理性愉悦。 题解 Subtask1 发现就是求 $a \times b \mod c $ 。 写个快速乘就好了。 Subtask2 直接打开的话会发现 gedit 卡死了。 用 Subline Te 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ206.html 题解 T = 1 的情况直接大力从两边向中间询问即可。 T = 2 的情况挺妙的,我没想到。 考虑首先花费 n + 1 代价得到全局最大值和最小值,也就是 a[1] 和 a[n] 。 然后考虑将值域均分为 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ129.html 题解 考虑把大于等于 $\sqrt n$ 的质数和小于 $\sqrt n$ 的分开考虑: 1. 小于等于 $\sqrt n$ 的质数最多只有 8 个。 2. 一个小于等于 n 的正整数最多包含 1 个 大于 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ346.html 题解 首先按照 $m_i$ 的大小排个序。 如果某一个区间和一个 m 值比他小的区间有交,那么显然可以将这个区间控制的区域删除掉重合的那一段。 如果一个区间被删没了,那么显然答案为 0 。 在这个处理之后, 阅读全文
摘要:
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ345.html 前言 我真的是越来越菜了,连树形DP都感觉陌生了。 题解 首先,我们来看看在不断生长叶子会发生什么。 第一种:顺着生长方向走。 第二种:在某一个节点的某些子树依次生长,达到他们之间互相消耗的 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/JunTanFenXi.html 本文概要 1. 引入 2. 简单例子 3. 证明 splay 复杂度 4. 证明 LCT 复杂度 引入 为什么 KMP 不能可持久化,而要用 KMP 自动机来代替? 为什么 splay 不能可持久 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ465.html 前言 tmd并查集写挂,调到自闭。 cly和我写挂了同一个地方。 一下救了两个人感觉挺开心。 题解 首先直接写 bfs/记忆化dfs 可以容易地得到一个 $O(m^2)$ ,或者 $O(nm)$ 的做法。常 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ104.html 题解 首先证明一个结论:对于一种分割方案,分割的顺序不影响最终结果。 证明:对于树 a[x] 和 a[y] ,如果 x 与 y 之间有分割,那么它们对答案的贡献就是 a[x] * a[y] ,否则无贡献。 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ416.html 前言 完了完了SB选手Tarjan写挂。 题解 考虑先Tarjan缩个点双建个圆方树。 然后发现,确定起点和终点后,中间点的可选方案数就是 这条路径上的所有点双 size 之和-2 。 定义原点表示原图中的 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/LOJ3048.html 题解 $O(n\log^2 {a_i})$ 的做法比较简单: 1. 求出第 k 大的是什么: 二分答案,在Trie树上统计一下答案。 2. 求出前 k 大的和:已经知道了第 k 大的数值,那么,只要再在 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/BZOJ3153.html 题解 直接用splay维护虚子树。 细节真多。 暂时还不会证明。 可能是一个log或者两个log。 先咕一咕,等证明它挂了或者证明它是对的或者我弃疗不证明了再更新。 UPD(2019-04-10):弃疗 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ196.html 题解 先离散化,设离散化后的值域为 $[0,m]$ 。 首先把问题转化一下,变成:对于每一个位置 $i$ ,求出它最终不超过 $j$ 的方案数。 考虑如何求这个东西。 对于一个固定的 $j$ ,考虑一个这样 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/ZJOI2019Day1T2.html 前言 在LOJ交了一下我的代码,发现它比选手机快将近 4 倍。 题解 对于线段树上每一个节点,维护以下信息: 1. 这个点为 1 的概率。 2. 这个点为 0 ,且它有祖先是 1 的概率。 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ449.html 题解 设 f(i) 表示给 i 只鸽子喂食使得至少一只鸽子被喂饱的期望次数,先 min-max容斥 一下。($\frac ni$ 表示期望每 $\frac ni$ 步喂这 i 只鸽子一次) $$ans = 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/PAM.html 前置知识 无。 (强行说和KMP有关也是可以的……) 关于回文串的一些性质 1. 一个长度为 n 的字符串最多有 n 个本质不同的回文子串。 2. 对于一个字符串 S,如果在其之后新插入一个字符,那么最多产生一种 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ103.html 前言 我终于会PAM啦 感谢CLY大佬手把手教我PAM 题解 建个 PAM。 统计一下每一个节点的 Right 集合大小,设 size[x] 为节点 x 的 right 集合大小。 求出 max(len[x 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ348.html 前言 第一次知道子集卷积可以自己卷自己。 题解 这是一道子集卷积模板题。 设 $sum[S]$ 表示点集 S 的点权和。 设 $f[S]$ 表示对点集 S 进行州区划分得到的答案,定义 $g[S]$ 在点集 阅读全文
摘要:
链接www.cnblogs.com/zhouzhendong/p/STL.html C++ STL 的一些基础用法 本文摘抄并整理自cppreference 前言 创建一个空的 vector ,我一直是这样写的: vector <int> v; v.clear(); 直到后来: vector 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/ZJOI2019Day1.html 这篇流水账本来是不会存在的。 然而我发现我居然暂时没有退役。 于是就有了这篇流水账。 3-24 11点半出发。 到了讲堂的时候NOIP2018颁奖已经开始了,但是 XJ 的人源源不断的涌进来。 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ370.html 题解 首先易知答案肯定是一条链,因为挂在链的最下面肯定比挂在其他节点上赚。 问题被转化成了从一个集合中不断选数加入到当前序列尾端,使得序列的所有前缀 AND 之和最小。 我们发现,假如加入一个数后可以使序列 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ24.html 题解 我们将 C 型车站称为 左括号 '(', D 型车站称为右括号 ')' ,设括号 i 的位置为 p[i] 。 首先,我们用点 0 把所有位置都询问一遍,那么距离最近的那个点一定是在 0 右边的第一个 ' 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ373.html 前言 真是一道毒瘤题。UOJ卡常毒瘤++。我卡了1.5h的常数才过QAQ Orzjry 标算居然是指数做法。 题解 1. 感受一下线图上点的含义 1.1 一阶线图 L(G) 上的一个点对应 G 中的一条边。 阅读全文
摘要:
原文链接www.cnblogs.com/zhouzhendong/p/UOJ75.html 前言 根本没想到。 题解 首先我们可以考虑一种做法: 找一些图,使得他们各自的生成树个数乘起来等于 k。 那么只要将他们用一条链连起来就得到答案了。 接下来考虑如何得到这些图。 考虑随机生成一个 n 个点的图 阅读全文
摘要:
原文链接https://www.cnblogs.com/zhouzhendong/p/AGC031D.html 前言 比赛的时候看到这题之后在草稿纸上写下的第一个式子就是 $$f(p,q) = pq^{-1}$$ 然后就再也没有改过。 发现了一堆奇奇怪怪的性质可是一直没有用。 直到官方题解出来的时候 阅读全文
摘要:
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ349.html 题解 被cqz D没了。我D cly 关你啥事(逃 首先链的情况直接rand就好了。 期望次数 $O(n+\log n)$ 。 然而我一开始写挂了。 开始扯淡 我用这个模数,就可以过原题数据 阅读全文
摘要:
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ7.html 题解 这题是Unknown的弱化版。 如果这个问题出在序列上,那么显然可以CDQ分治 + 斜率优化 + 凸包上二分来做。 那么它出在树上? 点分治。 写挂了好多地方调了好久,自闭了。 代码 阅读全文
摘要:
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ394.html 题解 首先我们发现一个数不能既被往左换又被往右换。也就是说不能有任何一个数左边有比他大的,又被有比他小的。 也就是最长下降子序列长度不超过 2 。 所以我们一定可以找到 2 个上升序列包含所 阅读全文
摘要:
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ424.html 题解 主席太神仙了! 首先我们把题意转化成:对所有挺好序列建 笛卡尔树,有多少笛卡尔树互不同构。 容易推出 dp 式子:$f[i][j]$ 表示 $j$ 个数,他们的 max 为 i 。 $ 阅读全文
摘要:
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ266.html 题解 首先我们可以直接暴力 $O(n^2)$ 用 sg 函数来算答案。 对于一个树就是枚举一下从根出发到哪一个节点为止的路径被删掉了,剩下所有的子树的sg值xor起来,对于每一个路径后的答案 阅读全文
摘要:
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ450.html 题解 首先有一个东西叫做“单位根反演”,它在 FFT 的时候用到过: $$\frac 1 n \sum_{i=0}^{n-1} \omega_n ^{d\cdot i} = [n|d]$$ 阅读全文
摘要:
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ41.html 题解 首先写个乱搞: 初始每行选择第一个非零元素。然后不断进行如下调整,直到没有两行选择了相同的数: 任取选了相同数的两行,更新被选数较为靠前的那行,即取该行后一个非负整数。 交上去。 过了。 阅读全文
摘要:
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ290.html 题解 真是一道好题! 首先,如果不是仙人掌直接输出 0 。 否则,显然先把环上的边删光。 问题转化成多个树求解,把答案乘起来即可。 现在我们考虑如何求一个树的答案。 再转化一下题意可以变成选 阅读全文
摘要:
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ291.html 题解 结论:这个写错的树状数组支持的是后缀加和后缀求和。这里的后缀求和在 x = 0 的时候比较特殊,返回 0 。 于是我们需要查询 v[L-1] 和 v[R] 相同的概率是多少。 我们可以 阅读全文
摘要:
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ375.html 题解 首先,我们可以建出一个 k 个点的自动机,第 i 个点表示当前数对 k 取模为 i-1。显然每一个点有 m-1 条出边。 然后,稍加观察,我们就可以发现,如果一些节点的出边集合是相同的 阅读全文
摘要:
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ374.html 题解 想出正解有点小激动。 不过因为傻逼错误调到自闭。不如贺题 首先我们考虑如何 $O(n)$ 求一个答案。 首先,计算两条路径的贡献时,由于两国连续交战数次只算一次,所以我们可以只看这两条 阅读全文