随笔分类 -  题解

摘要:题解摘自做题记录。 分析 数据范围明显得要让我们分开搞。 【Sub2】 应该是暴力。这里有个主体思路,我们完全可以贪心地将当前背包里的食材删掉,直到每种出现过的食材数量刚好为 \(1\)。因为我们保留更多的是没有用的。那么我们就可以用二进制数表示 \(x\) 种食材的出现状态了。 同时,可能存在当前 阅读全文
posted @ 2024-11-14 21:51 harmis_yz 阅读(15) 评论(0) 推荐(1)
摘要:分析 推式子题。 \[ans=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\tau(i)\tau(j)\tau(\gcd(i,j)) \]对于 \((i,j)\),若 \(k\) 是 \((i,j)\) 的因子,则 \(k\) 一定整除 \(i,j\),所以有 阅读全文
posted @ 2024-03-08 18:45 harmis_yz 阅读(25) 评论(0) 推荐(1)
摘要:分析 考虑 DP。 定义状态函数 \(f_i\) 表示处理完前 \(i\) 个字符且第 \(i\) 个字符为 \(1\) 时的最小代价。则对于 \(i\),有两种情况: \(i\) 不是第一个 \(1\),则上一个 \(1\) 的位置必定为 \(i-k\)。 \(i\) 是第一个 \(1\),没有上 阅读全文
posted @ 2024-03-07 14:31 harmis_yz 阅读(14) 评论(0) 推荐(1)
摘要:分析 考虑莫队。 令 \(S=\operatorname{lcm}(a_l,a_{l+1},a_{l+2},\dots,a_{r-1})\)。则对于新加进来的 \(a_r\),有: \[\begin{aligned} & \ \ \ \ \ \operatorname{lcm}(a_l,a_{l+1 阅读全文
posted @ 2024-03-07 13:43 harmis_yz 阅读(55) 评论(1) 推荐(1)
摘要:分析 考虑二分答案。 对于当前二分的答案 \(x\),设 \(cnt\) 表示 Farey 序列中 \(\frac{p}{q} \le x\) 的满足条件的数量。对于一组 \((i,j)\),若 \(\frac{j}{i}\le x\),则 \(j \le\lfloor i \times x \rf 阅读全文
posted @ 2024-03-07 13:43 harmis_yz 阅读(25) 评论(0) 推荐(0)
摘要:分析 考虑线段树。 \(20\) 分 统计节点懒标记,在每次询问之前统一下传 \((lst,i-1)\) 的修改懒标记,\(lst\) 是上一次询问的位置。 \(40\) 分 在统一下传的过程中打标记,如果当前节点的某个儿子所在子树中没有需要下传懒标记的节点,则不更新那个儿子的内容。 \(70\) 阅读全文
posted @ 2024-03-07 13:42 harmis_yz 阅读(38) 评论(0) 推荐(0)
摘要:分析 考虑莫队。 对于 \(a_i=k(l \le i \le r)\) 的下标集合 \(S_k\),当其加入一个新的下标 \(x\) 时,这个新下标对答案的贡献分两种情况。 第一种,\(x\) 最小。相邻从下标的间隔中产生的贡献是 \(\sum (|S_k|-i+1)\times(ans_{S_{ 阅读全文
posted @ 2024-03-07 13:42 harmis_yz 阅读(32) 评论(0) 推荐(0)
摘要:分析 弱智题。 和这题很像。 想到 DP。定义状态函数 \(\mathit{f}_{i,j}\) 表示区间 \([i,j]\) 中的答案。这玩意直接暴力 \(O(n^3)\) 算区间 DP,能有 \(35\) 分。 考虑优化,如果定义 \(\mathit{f}_{i,j}=0/1\) 表示子串 \( 阅读全文
posted @ 2024-03-07 13:42 harmis_yz 阅读(167) 评论(0) 推荐(0)
摘要:分析 水题,评分能有 \(2100\) 可能是因为很多人卡 E 了。 我说真的,E 好难啊。 \(n\) 只有 \(20\),考虑从状压的角度入手。定义状态函数 \(f_{s,i}\) 表示当某个字符串 \(T\) 包含了所有 \(s\) 的二进制中为 \(1\) 的下标 \(S_j\) 且 \(T 阅读全文
posted @ 2024-03-07 13:42 harmis_yz 阅读(36) 评论(0) 推荐(0)
摘要:分析 出得很好,模板套模板,希望下次再来。 难点在于维护最后连续喝的 DS 饮料数量。设这次喝原味饮料的区间为 \([l,r]\),上一次为 \([l',r']\)。则有两种情况: \([l,r]\) 与 \([l',r']\) 不相交。如: 在 \([l',r']\) 和 \([l,r]\) 两个 阅读全文
posted @ 2024-03-07 13:42 harmis_yz 阅读(30) 评论(0) 推荐(0)
摘要:分析 考虑乱搞。 对于求次大值,用线段树维护就行了。记录下每个区间的最大、次大值。则两个子区间的父区间的最大值就是这四个最大的,次大值就是这四个次大的。复杂度 \(O(\log n)\)。 求次大值的出现次数,乱搞就行了。因为带修,带修莫队或者分块有些麻烦。其实用线段树就行。在维护区间最大、次大值的 阅读全文
posted @ 2024-03-07 13:41 harmis_yz 阅读(20) 评论(0) 推荐(0)
摘要:分析 考虑暴力 DP。 定义状态函数 \(f_{i,j,k1,k2}\) 表示前 \(i+j\) 个人中,有 \(i\) 个步兵和 \(j\) 个骑兵且末尾连续步兵数量为 \(k1\),连续骑兵数量为 \(k2\) 的方案数。 由于末尾连续的要么是步兵要么是骑兵,所以状态中 \(k1,k2\) 只会 阅读全文
posted @ 2024-03-07 13:41 harmis_yz 阅读(33) 评论(0) 推荐(0)
摘要:分析 考虑 DP。 因为 \(n \le 3000\),我们可以直接枚举插针的位置。定义状态函数 \(f_i\) 表示在从左往右第 \(i\) 个小球的位置上插针的最小花费。 枚举该小球右边第一个插针的位置,则 \(i\) 到 \(j-1\) 的小球都会滚到小球 \(i\) 的位置。代价为 \(\s 阅读全文
posted @ 2024-03-07 13:41 harmis_yz 阅读(37) 评论(0) 推荐(0)
摘要:分析 考虑 DP。 定义状态函数 \(f_{i,j}\) 表示在 \(s[1\dots i]\) 中选一个子串 \(a\),在 \(t[1 \dots j]\) 中选一个子序列 \(b\),且 \(s_i,t_j\) 必选时 \(a=b\) 的方案数。则有两种情况: \(s_i \ne t_j\)。 阅读全文
posted @ 2024-03-07 13:40 harmis_yz 阅读(16) 评论(0) 推荐(0)
摘要:分析 分类讨论。 对 \(|p_i-p_j|+|i-j|\) 分类讨论,有: \((p_i+i)-(p_j+j)\),\(p_i>p_j \land i>j\)。 \(-(p_i-i)+(p_j-j)\),\(p_i<p_j \land i>j\)。 \((p_i-i)-(p_j-j)\),\(p_ 阅读全文
posted @ 2024-03-07 13:39 harmis_yz 阅读(20) 评论(0) 推荐(0)
摘要:分析 考虑状压。 定义状态函数 \(f_{i,j}\) 表示在经过点的情况为 \(i\) 且最后停在点 \(j\) 的最小花费。那有:\(f_{i,j}=\min\{f_{i',k}+w_{k \to j}|k\to j\}\)。然后就过不了样例一。根据样例一,可以发现 \(f_{3,2}=f_{2 阅读全文
posted @ 2024-03-07 13:39 harmis_yz 阅读(19) 评论(0) 推荐(0)
摘要:分析 考虑 DP。 先考虑 \(A\) 的答案。定义状态函数 \(f_{i,j}\) 表示在子串 \(S_{1 \dots i}\) 中选 \(j\) 个,且第 \(S_i\) 必选的方案数。则有:\(f_{i,j}=C_{i-1}^{j-1}\)。 再考虑 \(B\) 的答案。枚举每一个位置 \( 阅读全文
posted @ 2024-03-07 13:38 harmis_yz 阅读(22) 评论(0) 推荐(0)
摘要:分析 参照去年普及组 T4,很显然能发现就是一个暴力最短路。设 \(dis_{i,j}\) 表示从 \(1\) 走到 \(i\) 且能得到的 \(s\) 最小为 \(j\) 时的最短路。那么答案就是 \(\min\{dis_{n,i}|1 \le i \le V\}\)。 考虑最短路转移。对于当前的 阅读全文
posted @ 2024-03-07 13:38 harmis_yz 阅读(21) 评论(0) 推荐(0)
摘要:分析 考虑区间 DP。 定义状态函数 \(\mathit{f}_{l,r,1/0}\) 表示在 \(P_l,P_{l+1},\dots,P_r\) 这些点中,\(P_l\) 是或不是唯一(子)树根时的答案。 对于 \(\mathit{f}_{l,r,1}\),\(P_l\) 的第一个儿子一定是 \( 阅读全文
posted @ 2024-03-07 13:37 harmis_yz 阅读(16) 评论(0) 推荐(0)
摘要:分析 和 T5 差不多的思路。把所有的绿色格子看做图上的点,对于将每个绿色格子变成红色时连通块增加的数量,实际上就是无向图中删掉某个点连通分量变化量的问题。 对于删掉某个点后连通分量变化量,有三种情况: 节点是孤点,删掉后连通分量增加 \(-1\)。 节点是割点,删掉后连通分量增加其所在点双数量 \ 阅读全文
posted @ 2024-03-07 13:37 harmis_yz 阅读(51) 评论(0) 推荐(0)