合集-题解

摘要:本题是一个坐标DP问题 状态转移 首先我们注意到,一个状态只能由两种前置状态得到:取左边的数和取右边的数,因此我们以状态为阶段定义如下: \(f[a][b][c]\) 为状态转移数组,其中 \(a\) 为已取走的数目,区间 \([b,c]\) 为未取走的所有数组成的区间(能够发现,未取走的所有数组成 阅读全文
posted @ 2024-02-15 10:21 HaneDaniko 阅读(76) 评论(0) 推荐(0)
摘要:万元申万的(不是) 嗯... 另外,这道题其实叫一心净士(shi) 而不是一心净土. 剖析 我们注意到题目要让我们使最小的自然数最大,那么我们的每一个区间都要从零开始放. 显然,假如我们所有区间里最小的一个的长度为 \(n\) ,那么我们最多只能数到 \(n-1\) ,因为再往下数的话,最短的一个区 阅读全文
posted @ 2024-02-14 19:42 HaneDaniko 阅读(94) 评论(3) 推荐(3)
摘要:同机房大佬也写了这题的 题解. 通解分析 此类问题我通常喜欢归纳成一类,即阻碍联通的坐标DP. 既然是阻碍联通,那么此类问题的通用思路是这样的: 首先将dp数组图形化. 一般用一个特定图形上的特定点来标识整个图形. 比如假如我需要找正方形的最大面积,我可以用左下角坐标来表示整个正方形. 找三角形最大 阅读全文
posted @ 2024-02-16 08:31 HaneDaniko 阅读(51) 评论(2) 推荐(1)
摘要:同机房大佬也写了这道题的 题解. 我在另一篇 题解 中提到了这类问题的通解,接下来我们依照此通解思考该题. 问题处理 首先我们来定义三角形的表示方式. 定义 \(f[i][j]\) 表示三角形 \((i,j)\) 的最大边长,其中三角形 \((i,j)\) 为垂直顶点坐标为 \((i,j)\) 的三 阅读全文
posted @ 2024-02-16 10:27 HaneDaniko 阅读(64) 评论(0) 推荐(1)
摘要:该题目是一道树上背包问题,题目的全部思路已写在 树上背包问题 中. 该题目代码只供辅助理解. struct edge{ int to,w; }; vector<edge> e[1001]; int n,m,f[1001][1001]; void dfs(int s){ for(edge i:e[s] 阅读全文
posted @ 2024-02-16 21:23 HaneDaniko 阅读(23) 评论(0) 推荐(0)
摘要:可以发现,假如在序列中遇到一个数为 \(2\) ,也就是有两个子节点,那么接下来的全部数字都是描述左树的,一直到左树被遍历完成. 这让你想到了什么? 当然是DFS啦. 根据DFS我们有下面这样的存图思路: 假如遇到 \(2\) ,新建一个节点,分别对这个节点递归左右子树 假如遇到 \(1\) ,新建 阅读全文
posted @ 2024-02-16 22:02 HaneDaniko 阅读(25) 评论(0) 推荐(0)
摘要:实际上这题很难和树状数组联系起来,我感觉效率也不是很高,感觉不是正解 怎么使用树状数组 这道题我们很容易想到一点:同种物品在一个区间内只能出现一次,先不考虑别的问题,我们想出下面这种使用树状数组的思路: 定义树状数组只有 \(0\) 和 \(1\) 两种状态,分别表示统计这个物品或不统计这个物品. 阅读全文
posted @ 2024-02-18 15:16 HaneDaniko 阅读(68) 评论(6) 推荐(3)
摘要:题目描述 有一个整数组成的矩阵,现请你从中找出一个指定边长的正方形区域,使得该区域所有数中的最大值和最小值的差最小。 题目分析 其实这道题和滑动窗口很像,而滑动窗口使用优先队列解决. 我们都知道优先队列可以维护区间最值. 但是优先队列维护的区间不是二维的,而是一维的. 因此,这道题我们的思考方向,一 阅读全文
posted @ 2024-02-22 08:20 HaneDaniko 阅读(18) 评论(0) 推荐(0)
摘要:题目描述 给出 \(N\) 个正整数 \(a[1..N]\) ,再给出一个正整数 \(k\) ,现在可以进行如下操作:每次选择一个大于 \(k\) 的正整数 \(a[i]\) ,将 \(a[i]\) 减去 \(1\) ,选择 \(a[i-1]\) 或 \(a[i+1]\) 中的一个加上 \(1\) 阅读全文
posted @ 2024-02-22 11:55 HaneDaniko 阅读(18) 评论(0) 推荐(0)
摘要:题解引用 引理1: 区间 \([l,r]\) 是最优解的必要不充分条件是: \(l,r\) 分别是区间的最小值与最大值. 这很显然,若假设不成立,当区间向内缩小时,一定有分子不变,分母变小,进而算出更优解,与假设矛盾. 引理2: 最优解不小于 \(x\) 的充要条件为存在区间 \([i,j]\),使 阅读全文
posted @ 2024-02-23 20:00 HaneDaniko 阅读(52) 评论(1) 推荐(1)
摘要:题目链接 T415418 这道题严格的时间限制比较令人头疼,似乎需要一些高级的算法,但实际上是,想要用点基础知识通过这道题需要两种算法:费马小定理 (见下函数Miller_rabin) 用于subtask1,另一种算法 (见下函数prim) 用于subtask2.两个subtask的范围限制给了我们 阅读全文
posted @ 2024-03-05 22:14 HaneDaniko 阅读(24) 评论(0) 推荐(0)
摘要:初步分析 此题描述让我们想到Tarjan求割点,因此我们从割点的角度来探讨一下这道题. 假如我们去掉的不是一个割点,那么它实际上不会对连通性造成影响,但是根据样例可以看出来,删去这个点导致了其余点与当前点无法联通,即答案为 \(2\ (n-1)\). 假如我们去掉的点是一个割点,那么它必然会将整张图 阅读全文
posted @ 2024-03-11 16:15 HaneDaniko 阅读(31) 评论(0) 推荐(0)
摘要:形式化题意 给定一个带权无向图,求从 \(s\) 点到 \(e\) 点的路径上途径边权种类的最小值. 思路 题图 我们把边权种类相同的点连成的子图抽象成一个 "平台" ,从题目给我们的图中可以看出来,\(1\) 到 \(6\) 的过程其实也是不断上平台与下平台的过程. 从 \(1\) 点上绿平台,走 阅读全文
posted @ 2024-03-18 14:29 HaneDaniko 阅读(28) 评论(0) 推荐(0)
摘要:形式化题意 在长度为 \(n\) 的序列中放两种元素 \(F\) 与 \(M\),使得相邻的 \(M\) 之间的距离不超过 \(k\). 求方案数. 思路分析 考虑分特殊情况考虑. 特殊情况一 没有 \(M\) 方案一定成立,为 \(1\). 再考虑剩下的情况,那么一定是有 \(M\) 的了. 特殊 阅读全文
posted @ 2024-04-13 17:28 HaneDaniko 阅读(19) 评论(0) 推荐(0)
摘要:谴责这道题发明在线莫队的人,简直就是异端,还好我给在线莫队卡了,支持正义制裁 题意简述 给定序列,设 \(f(l,r,x)\) 表示 \(x\) 在 \([l,r]\) 内的出现次数,对给定 \(l,r,a,b\) 求 \(\sum^{i}_{a\le i\le b} f^{2}(l,r,i)\). 阅读全文
posted @ 2024-04-22 16:38 HaneDaniko 阅读(74) 评论(6) 推荐(1)
摘要:解法原理1 首先我们需要明白 \(\operatorname{nand}\) 的运算: \[\operatorname{not}(a\operatorname{nand}b)=a\operatorname{and}b\tag{1} \]这个很好理解,因为 \(\operatorname{nand}\ 阅读全文
posted @ 2024-06-23 20:50 HaneDaniko 阅读(37) 评论(0) 推荐(1)
摘要:给定一个数,将它表示成若干个形如 \(11,111,1111\cdots\) 之类的数之和,判断有没有可行解 考虑到一种贪心,即从高位开始依次向下减去每位数字,判断还能不能减动,减不动或者没减完就报告无解. 显然这样的贪心仅在 \(11,111,1111\cdots\) 的出现次数之和不超过 \(9 阅读全文
posted @ 2024-08-06 21:30 HaneDaniko 阅读(67) 评论(0) 推荐(2)
摘要:在树上标记若干个点,求出从某个点走过全部点并回到该点的最小路径. 有多次询问,每次询问只改变一个点. 首先是一个暴力的思路. 会发现,从标记点中的其中一个开始走,结果一定更优,并且无论从哪个点开始走,其结果都是相同的. 假若不考虑还要走回来,那么答案就应该是标记点两两之间路径和的最小值,至于还要走回 阅读全文
posted @ 2024-08-09 11:51 HaneDaniko 阅读(613) 评论(0) 推荐(1)
摘要:CL-22 二进制拆分。 对于枚举到的每一个二进制位 \(i\),注意到其对答案的贡献只有 \(0\) 和 \(2^{i}\) 两种情况 考虑什么时候贡献是 \(2^i\),可以发现,当选入奇数个该位为 \(1\) 的数之后,对答案的贡献是 \(2^{i}\) 因此变成求选出奇数个为 \(1\) 的 阅读全文
posted @ 2024-09-27 21:37 HaneDaniko 阅读(94) 评论(15) 推荐(1)
摘要:UPD: 新增了杂题选改栏 总览 题单 进度 备注 数据结构1 4/24 数据结构可爱捏 >_< 搜索 模拟 All Clear/10 搜索可爱捏 >_< 数学1 0/11 数学不可爱捏 `-´ 字符串 6/13 哈希可爱捏 >_< 杂题选改 7 杂题专题没了,杂题倒是有不少 数据结构 1 STEP 阅读全文
posted @ 2024-11-11 17:21 HaneDaniko 阅读(102) 评论(0) 推荐(4)
摘要:两道题都很好 Intervals 给定 \(m\) 条规则形如 \((l_i,r_i,a_i)\)​,对于一个 01 串,其分数的定义是:对于第 \(i\) 条规则,若该串在 \([l_i,r_i]\) 中至少有一个 1,则该串的分数增加 \(a_i\) 你需要求出长度为 \(n\) 的 01 串中 阅读全文
posted @ 2024-11-08 20:49 HaneDaniko 阅读(52) 评论(8) 推荐(1)
摘要:HDK: 他妈的,这个看着也不像 2900 啊,为啥控我这么久 lbtl: 他不控你这么久不就不是 2900 了吗 暴力 一个比较明显的暴力思路是,如果我们钦定选定的物品的价值,那么可以比较容易地由背包 DP 算出能达到这个钦定值的最大概率 从 \([0,\sum w_i]\) 枚举所有可能的价值, 阅读全文
posted @ 2024-11-10 14:57 HaneDaniko 阅读(61) 评论(4) 推荐(2)
摘要:气死我了这题,还是写一下题解 首先有一个非常好的转化,你可以把给定操作转为树上颜色问题 假设将操作 \(1\) 改成 “将从 \(x\) 到 \(y\) 路径上的所有点都涂上一种新的颜色”,那么可以发现,与路径上的点相邻的所有非路径点,与路径上的点颜色必然不同,路径上的点之间两两必然相同 因此就可以 阅读全文
posted @ 2024-11-13 19:13 HaneDaniko 阅读(38) 评论(0) 推荐(2)
摘要:这是一个摘要 阅读全文
posted @ 2024-11-20 18:14 HaneDaniko 阅读(44) 评论(1) 推荐(2)