随笔分类 -  题解

摘要:题目传送门 前置知识 数位 DP | 记忆化搜索 解法 基础数位 DP,与 luogu P2657 [SCOI2009] windy 数 类似,记录当前位置、上一位填的数码,接着记忆化搜索即可。 需要注意的是有前导零时,此时不需要管相邻两位数字差的绝对值不超过 \(k\) 的限制。 代码 #incl 阅读全文
posted @ 2024-07-14 13:07 hzoi_Shadow 阅读(35) 评论(0) 推荐(1)
摘要:题目传送门 前置知识 Tarjan 算法 | 最短路 解法 缩点后原图就成为了一个有向无环图,此时每个点最多被经过一次,故在求最长路的过程中可以将点权和边权混着转移。 上篇题解用拓扑实现查找两点间最长路的做法正确性不会证,遂写了份 Dijkstra 求最长路。 代码 #include<bits/st 阅读全文
posted @ 2024-07-14 11:25 hzoi_Shadow 阅读(18) 评论(0) 推荐(1)
摘要:题目传送门 前置知识 单调栈 解法 容易有每个建筑物的宽度对答案没有影响,故可以将其宽度均看作 \(1\)。 在最优策略下,对于每张海报,其高度一定等于所覆盖的楼的最小高度。 单调栈维护最小高度,记录额外海报数量(与先前高度相等时可以少用一张海报)。 最终,用总张数 \(n\) 减去额外海报数量即可 阅读全文
posted @ 2024-07-04 21:18 hzoi_Shadow 阅读(11) 评论(0) 推荐(1)
摘要:题目传送门 前置知识 计数 DP 解法 方案数统计同 luogu P2467 [SDOI2010] 地精部落,但部分写得不太好看的状态转移方程在本题中并不适用,但仍可借鉴其“离散化”思想。 考虑试填。 设 \(f_{i,j,0/1}\) 表示用 \(i\) 块不同的木板构成栅栏,其中最左边的木板的长 阅读全文
posted @ 2024-07-04 08:24 hzoi_Shadow 阅读(19) 评论(0) 推荐(1)
摘要:题目传送门 前置知识 计数 DP | 排列组合 解法 正难则反,考虑求出总方案数和至少经过一个黑色格子的方案数,二者作差即为所求。 强制增加一个黑色格子 \((h,w)\),使得存在一条至少经过一个黑色格子的路径。 如果没有“不能移动到黑色格子中”的限制,那么就是一个简单的格路计数问题,方案数为 \ 阅读全文
posted @ 2024-07-03 21:00 hzoi_Shadow 阅读(25) 评论(0) 推荐(1)
摘要:题目传送门 前置知识 数位 DP | 记忆化搜索 解法 本题的提交在 luogu 上挂了,建议去原站或 Vjudge 上提交。 基础数位 DP,记录当前位置、已填的数码之和,接着记忆化搜索即可。 需要注意的是 \(0 \bmod d=0\),如果写得不太好看(未处理前导零)的话需要减去其贡献。 代码 阅读全文
posted @ 2024-07-02 20:11 hzoi_Shadow 阅读(36) 评论(0) 推荐(1)
摘要:题目传送门 前置知识 数位 DP | 同余 解法 同余的传递性:若 \(\begin{cases} a,b \in \mathbf{Z} \\ p,q \in \mathbb{N}^{*} \\ q \mid p \end{cases}\),则当 \(a \equiv b \pmod{p}\) 时有 阅读全文
posted @ 2024-07-02 19:07 hzoi_Shadow 阅读(22) 评论(0) 推荐(1)
摘要:题目传送门 前置知识 状压 DP | 条件概率 解法 观察到 \(n \le 20\),考虑状压枚举所有可能的状态。 令 \(A\) 表示恰好有 \(r\) 个人买了东西,\(B_{i}\) 表示第 \(i\) 个人买了东西。由条件概率 \(P(B_{i}|A)=\frac{P(AB_{i})}{P 阅读全文
posted @ 2024-06-29 21:36 hzoi_Shadow 阅读(28) 评论(0) 推荐(1)
摘要:题目传送门 前置知识 权值树状数组及应用 解法 从贪心的角度分析,当小 K 有 \(x(x \ge k)\) 个同种糖果时,将其分给 \(k\) 个小朋友时尽可能平均发是最优情况,此时产生的愤怒值为 \(x-k\)。 那么,设出现次数 \(\ge k\) 的糖果分别为 \(b_{1},b_{2},b 阅读全文
posted @ 2024-06-29 18:40 hzoi_Shadow 阅读(31) 评论(0) 推荐(1)
摘要:题目传送门 前置知识 STL 算法 解法 一个简单的结论:随着前缀长度的增长,出现的数字种类数每次只能增加 \(0\) 或 \(2\)。考虑构造时可以从这里下手。 一种构造方案是这样的:优先让数字种类数增加 \(2\),即先将原先没有出现过的数往前放;接着让数字种类数增加 \(0\),即后将原先出现 阅读全文
posted @ 2024-06-29 18:39 hzoi_Shadow 阅读(45) 评论(0) 推荐(1)
摘要:题目传送门 前置知识 树的遍历 解法 目前在 \(fa\) 节点时,搜到子节点 \(x\) 和其他子节点的概率是相等的(因为不需要管具体是哪个节点),均为 \(\frac{1}{2}\)。 设 \(f_{x}\) 表示 \(x\) 时间戳的期望值,状态转移方程为 \(f_{x}=1+f_{fa}+\ 阅读全文
posted @ 2024-06-28 17:14 hzoi_Shadow 阅读(21) 评论(0) 推荐(1)
摘要:题目传送门 前置知识 记忆化搜索 解法 本题中的得到是指目前的牌中包含所要求的牌,而不是目前的牌中恰好是所要求的牌。 设 \(f_{a,b,c,d,x,y}\) 表示已经抽了 \(a\) 张黑桃,\(b\) 张红桃,\(c\) 张梅花,\(d\) 张方块,大王/小王的使用状态为 \(x/y\) 时的 阅读全文
posted @ 2024-06-28 14:10 hzoi_Shadow 阅读(19) 评论(0) 推荐(1)
摘要:题目传送门 前置知识 二项式反演 | 乘法原理 | 扩展欧拉定理 | 容斥原理 解法 考虑二项式反演。 设 \(f_{m}\) 表示交集中恰好有 \(m\) 个元素的方案数,\(g_{m}\) 表示交集中至少有 \(m\) 个元素的方案数,即 \(g_{m}=\sum\limits_{i=m}^{n 阅读全文
posted @ 2024-06-24 22:35 hzoi_Shadow 阅读(25) 评论(0) 推荐(2)
摘要:题目传送门 前置知识 二叉搜索树 & 平衡树 解法 笔者写这篇题解的时候题面应该是出锅了,建议去看 Acwing 的题面。 第一问同 luogu P2234 [HNOI2002] 营业额统计 ,平衡树维护前驱、后继(非严格意义上的)求出差值后取 \(\min\) 即可;第二问用 map 实现一个映射 阅读全文
posted @ 2024-06-08 12:57 hzoi_Shadow 阅读(65) 评论(0) 推荐(2)
摘要:题目传送门 前置知识 高斯消元法解异或方程组 | 乘法原理 解法 把开关的相互影响关系转化成异或,然后就转化成了异或方程组,高斯消元求解即可。 判断是否存在解的过程同 luogu P2455 [SDOI2006] 线性方程组 。 由于自由元仅能取 \(0/1\),故总方案数为 \(2\) 的自由元数 阅读全文
posted @ 2024-06-08 12:49 hzoi_Shadow 阅读(37) 评论(0) 推荐(2)
摘要:题目传送门 前置知识 树链剖分 | 线段树 解法 树链剖分后维护一个支持区间修改,单点查询的线段树即可。 也可以树上差分,同 146. DFS 序 3,树上差分 1 的 \(1,2\) 操作,时间复杂度比树链剖分更优。 代码 #include<bits/stdc++.h> using namespa 阅读全文
posted @ 2024-05-26 11:26 hzoi_Shadow 阅读(13) 评论(0) 推荐(2)
摘要:题目传送门 前置知识 无旋 treap 解法 与 luogu P3391 【模板】文艺平衡树 不同的是本题翻转后需要放到整个序列的末尾。 由于需要翻转后放到末尾,故无旋 Treap 在维护文艺平衡树的过程中合并时跳着合并即可。 代码 #include<bits/stdc++.h> using nam 阅读全文
posted @ 2024-05-26 11:21 hzoi_Shadow 阅读(8) 评论(0) 推荐(2)
摘要:题目传送门 前置知识 树链剖分 | 线段树 解法 树剖换根,子树查询板子。 类似 换根 DP 的思路,我们发现换根后仅有祖先、子树、深度等会随祖先的变化而变化。 设 \(rt_{i}\) 表示第 \(i\) 次操作的树根,\(x_{i}\) 表示第 \(i\) 次操作的节点。接着进行大力分讨。 当 阅读全文
posted @ 2024-05-26 11:16 hzoi_Shadow 阅读(33) 评论(0) 推荐(2)
摘要:题目传送门 简化题意 给定 \(H,n\) 和一个长度为 \(n\) 的序列 \(d\),求一个最小的 \(m\) 使得 \(H+\sum\limits_{i=1}^{m}d_{(i-1) \bmod n+1} \le 0\)。 解法 将式子移项后得到 \(\sum\limits_{i=1}^{m} 阅读全文
posted @ 2024-05-26 11:10 hzoi_Shadow 阅读(16) 评论(0) 推荐(2)
摘要:题目传送门 前置知识 欧拉序 | 区间 DP | 乘法原理 解法 颜色序列本质上是欧拉序,故考虑区间 DP。 设 \(f_{l,r}\) 表示 \([l,r]\) 对应的二叉树的个数,状态转移方程为 \(f_{l,r}=\begin{cases} 1 & l=r \\ [s_{l}=s_{r}] \ 阅读全文
posted @ 2024-05-02 11:23 hzoi_Shadow 阅读(12) 评论(0) 推荐(2)

扩大
缩小