随笔分类 -  题解

摘要:简单题。 树上路径相交有个很经典的性质:如果 \((u_1,v_1),(u_2,v_2)\) 相交,则一定在 \(\operatorname{lca}(u_1,v_1),\operatorname{lca}(u_2,v_2)\) 中更深的那个相交。所以只用看两条路径是否除了这个点没有其他交点即可。 阅读全文
posted @ 2024-03-09 10:33 yinhee 阅读(41) 评论(0) 推荐(0)
摘要:首先发现行之间的先后顺序之和它在最后一次修改中修改成了什么有关。于是倒序考虑。 倒序考虑一列什么时候可以操作。如果有两行 \(i,j\) 的顺序之前没有被确定,在在这次操作被确定,而且不符合最后顺序的要求,那么这一列就是不能在这个时候被操作的。 于是可以对于每一列,记录还有多少对 \((i,j)\) 阅读全文
posted @ 2024-03-09 10:32 yinhee 阅读(28) 评论(0) 推荐(0)
摘要:小丑,做这种题做半天。 首先发现有贡献的位置是一个斜正方形,从内到外贡献系数依次递减。先拆成四个部分(四个直角三角形),每次将整个矩形旋转来分别做,最后简单容斥一下。 考虑对于一个直角三角形怎么计算贡献。考虑从它左边的一个三角形转移过来。设定点为 \((i,j)\) 的三角形贡献为 \(f_{i,j 阅读全文
posted @ 2024-03-09 10:31 yinhee 阅读(19) 评论(0) 推荐(0)
摘要:图论基础题。但是想偏了想了半天。 考虑先对原图做一次 tarjan 求割边。处理 \(c=1\) 的答案。 \(c=2\) 最自然的想法是枚举所有边,断掉,再重新跑 tarjan。但是会超时。但是不难发现,只有 tarjan 建出的 dfs 树上的树边删去时,树的形态有可能改变。 这些边有 \(O( 阅读全文
posted @ 2024-03-09 10:30 yinhee 阅读(12) 评论(0) 推荐(0)
摘要:同样来自 @Explodingkonjac 学长的讲题。但是我没认真听讲,所以自己想出来了。 原本的想法是设对于每一组分别设 \(dp_{i,j}\) 为当前枚举到第 \(i\) 个位置,已经钦定了 \(j\) 个该组中的人投给自己组的方案数。转移就是枚举有多少人投给 \(i\) 然后容斥。 但是可 阅读全文
posted @ 2024-03-09 10:29 yinhee 阅读(31) 评论(0) 推荐(0)
摘要:@Explodingkonjac 学长讲的做法,题解区有一篇讲这个的,但是感觉细节真的好多…… 我们先尝试构造出来一个合法序列。怎么构造呢?先枚举 \(\sum a_i=s\),然后先将序列 \(a\) 设为 \(\max(p_n,0)\) 个 \(1\) 后面接 \(\max(p_n,0)-s\) 阅读全文
posted @ 2024-03-09 10:28 yinhee 阅读(13) 评论(0) 推荐(0)
摘要:其实不会反演也可以做。 首先显然要考虑给你每个数个数,怎么计数。最简单的方法是从大枚举到小,设 \(c_i\) 为 \(i\) 的个数,\(f_i\) 为 \(\gcd=i\) 的 \(k\) 元组出现了多少次,则 \(f_i=\binom{c_i}{k}-\sum_j f_{ij}\),就是 \( 阅读全文
posted @ 2024-03-09 10:27 yinhee 阅读(14) 评论(0) 推荐(0)
摘要:==Ambiguous Encoding。orz Wu_ren。 直接选两个拼成的字符串不好刻画,考虑增量。定义一对合法的字符串 \(S,T\) 满足其中一个是另一个的前缀(这样才可能通过往后面加模式串变一样),每次往当前两个字符串中长度更短的后面塞一个模式串,使得一个字符串仍是另一个的前缀。 容易 阅读全文
posted @ 2024-03-09 10:25 yinhee 阅读(25) 评论(0) 推荐(0)
摘要:orz sinsop90/bx 乌龟和 sinsop 结芬!!! 题意即数最大匹配为 \(k\) 的二叉树个数。数树问题,考虑不断加入子树 dp。但是这题是二叉树,所以可以直接每次将两个并作一个转移。 考虑怎么设计状态:子树 \(siz\) 肯定是要记的,然后最大匹配数也是。发现只记这两个不好转移, 阅读全文
posted @ 2024-03-09 10:23 yinhee 阅读(21) 评论(0) 推荐(0)
摘要:又是模拟赛题,感觉挺牛的。kkio 场了/bx 首先发现每一次大操作等同于进行一次置换,会形成若干个置换环。根据经典结论得,设这些环长为 \(cyc_i\),则有 \(k=\operatorname{lcm}cyc_i\)。于是考虑在原图中构造若干置换环。 然后通过手玩发现,可以在 \(4\) 步以 阅读全文
posted @ 2024-03-09 10:21 yinhee 阅读(19) 评论(0) 推荐(0)
摘要:虚高 *2800,放模拟赛 T1 人均切了。 这是 zlt 说的,不是我说的,我还是觉得没那么虚高的。 首先显然是数位 dp。 一个关键点就是怎么计算 \(f_i\times f_{i+1}\)。会发现可以将为 \(4\) 的位置看作 \(0\),否则为 \(1\),则二进制下 \(f_{i+1}= 阅读全文
posted @ 2024-03-09 10:17 yinhee 阅读(23) 评论(0) 推荐(0)
摘要:虚高 *2800。放模拟赛 T2 人均切了。 先想树的情况怎么做。枚举每个起点,剩下的贡献就是定值。求这个值可以钦定 \(1\) 为根求出所有的 \(siz\),然后枚举 \(i\) 为起点,以 \(i\) 为起点的答案就是 \(\sum siz_i\) 加上 \(i\) 到 \(1\) 路径上,不 阅读全文
posted @ 2024-03-09 10:16 yinhee 阅读(17) 评论(0) 推荐(0)
摘要:现场做了,离散化数组没开 ll,被卡 au 线 \(\to\) 卡线 ag。 因为代码是半个月前写的了,回忆做法时可能有点偏差,如果发现有误请联系我修改。😃 考虑怎么刻画题目所给条件。发现对于一个区间 \([l,r]\),可以钦定其中一个卡牌 \(i\),使得这张卡牌是第一张无法打出的牌。然后考虑 阅读全文
posted @ 2024-01-21 09:58 yinhee 阅读(34) 评论(0) 推荐(0)
摘要:%赛场切了! 矩阵是不太好处理的,所以考虑从一行去推下一行。 设上一行选择了 \(p_1,p_2,\cdots,p_k\) 这几个横坐标的位置为 \(1\),分情况讨论一下这一行选择的 \(x\) 位置。 (下列结合自己画图理解) \(x\ge p_1\)。 首先发现如果选择一个 \(x\not\i 阅读全文
posted @ 2024-01-16 17:05 yinhee 阅读(24) 评论(0) 推荐(0)
摘要:简单题。想到怎么计数就结束了。 重点就是怎么样计算循环次数。肯定是不能枚举一遍,双指针去数的。 但是发现 \(t\) 有一个很好的性质:它是 \([1,k]\) 内字符的排列。说明每个字符在 \(t\) 中只会出现一次。然后发现,可以按照最长公共子序列那题类似的思路,根据 \(t\) 内字符的位置为 阅读全文
posted @ 2024-01-16 17:02 yinhee 阅读(21) 评论(0) 推荐(0)
摘要:whk 考试前写题解攒 rp 有用吗 仍然是讲讲想出来的过程。 首先,我们只需要关心一个联通块中有哪些点,而不用关心图的具体形态。 然后,将每个连通块看作一个点,就变成了一个无根树计数问题,但是带权值。首先想到 prufer 序列。 prufer 序列的定义:一棵无根树中,每次将编号最小的叶子取出来 阅读全文
posted @ 2024-01-07 22:07 yinhee 阅读(17) 评论(0) 推荐(0)
摘要:大常熟另类做法。不用排序。 要求直径长度,则想到把直径这一条链拎出来处理。然后考虑其他边会接在哪里,发现树最优情况下一定是一个毛毛虫的形式。更进一步,所有边都挂在接近直径中点的点上。 然后再考虑这些不在直径中的,长度为 \(l\) 的边带来的限制,设直径为 \(d\),从每个点将直径切成两半,记其中 阅读全文
posted @ 2024-01-07 22:06 yinhee 阅读(15) 评论(0) 推荐(0)
摘要:挺巧妙的题。 首先可以根据每个点出现时间知道每条边出现时间。然后就是一个 SGT 分治了……吗?发现如果对于每个时刻记录此时有哪些点和 \(1\) 联通,每次都要 \(O(n)\) 的时间扫一遍,这样肯定是不行的。 那么怎么办呢?于是考虑在并查集合并一次的时候判断合并中的两个点中的一个是否与 \(1 阅读全文
posted @ 2024-01-04 17:03 yinhee 阅读(11) 评论(0) 推荐(0)
摘要:题目传送门 解题思路:倍增+树剖+树状数组 对于每次询问,我们可以看成是两个点都不断往上跳(如果一个点是另一个点的祖先则是只有一个跳),有一个很明显的贪心策略:每次都跳到能跳到的深度最小的点。然而一次一次往上跳可能被极端数据卡掉,所以要用倍增维护跳 \(2^i\) 次能跳到哪里。 然而两个点都跳到他 阅读全文
posted @ 2023-12-23 21:56 yinhee 阅读(34) 评论(0) 推荐(0)
摘要:dp+根号分治,配得上省选题的难度。 一眼 dp,虽然暴力肯定过不了,但是把朴素转移先列出来绝对没坏处。 \[dp_i=\min\limits_{1\leq j<i}(dp_j+\min\limits_{j\leq k\leq i}a_k\times v) \]这个东西很难用 DS 维护,有 \(\ 阅读全文
posted @ 2023-12-23 21:49 yinhee 阅读(23) 评论(0) 推荐(0)