摘要: 不要恐慌 本文所有涉及 NOIP2022 相关内容均在比赛后更新。请不要恐慌。 Dat -1 / 207 早上想了很久,把上次 ARC 的 D 过了,觉得不是非常困难。然后研究了老半天“为什么 freopen + std::cout + std::ios::sync_with_stdio 不刷新缓冲 阅读全文
posted @ 2022-11-26 16:50 Acfboy 阅读(632) 评论(0) 推荐(0) 编辑
摘要: Day -132 CF1593F,2100,基础 dp。 注意取模时要除不一定有逆元,所以使用我为人人型 dp,并记录转移来的状态。 CF1392E, 2100,构造。方案开始不同时让二进制上的一位只有一种能取到就不会有相同的和了。 CF1389D,2100,暴力。分讨要仔细啊啊啊(好像是废话)。 阅读全文
posted @ 2022-08-22 17:31 Acfboy 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 第一次在赛场上想出 G 的做法! 可惜太慢了到最后 5 分钟不到才写完来不及调了。 首先可以得到一个 \(O(n^2)\) 的 dp 式子 \(f_i = \sum f_{j} \times \operatorname H(j+1..i)\),\(\operatorname H\) 是极差,初始条件 阅读全文
posted @ 2022-01-09 16:59 Acfboy 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 给定一个长 \(n(\le 1000)\) 的排列和 \(m\) 种交换方式,构造方案使在 \(5\times 10^5\) 步中使序列有序。 一个显然的结论是构造出这个图之后如果一个数和它应该在的位置在同一个联通块,那么肯定是有解的,因为达到任何顺序都不会超过 \(\frac{n^2}{2}\) 阅读全文
posted @ 2021-12-26 07:54 Acfboy 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 定义一个排列的分数为开始时第 \(i\) 个人拿着 \(i\) 号球,每次 \(i\) 把球给 \(p_i\),需要第二次达到开始状态的次数。求长度为 \(n\) 的所有排列的分数的 \(k\) 次方的和。 这场 ABC E 一些小问题调得太久了,最后的时间里没有能做出这题了。虽然多个二十分钟可能还 阅读全文
posted @ 2021-11-09 19:29 Acfboy 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 转眼间已经快一个月没有写博客了呢 我的 dp 水平似乎都留在了 CSP 考场上那个惊险的 dp 上,最近试了几道 dp 都没做出( 最多修改 \(k\) 次,求字符串 \(\textsf{ab}\) 在子序列 \(s\) 中出现的最多次数。 原来的想法是 \(f(i, j, k)\) 表示前 \(i 阅读全文
posted @ 2021-11-05 19:24 Acfboy 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 找出所有的 \(k\) 使 \(a\) 的所有长度为 \(k\) 的子串都可以被分为和相等的两部分。 赛场上的想法是通过某种神奇的方式快速删一个加一个或者使处理出来一块的结果被很多块用上之类的,然后想着 \(f_i\) 表示组成 \(i\) 的第一个的最后面的位置。笑死,有了这个 \(f\) 直接就 阅读全文
posted @ 2021-10-06 15:48 Acfboy 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 给定一个数组 \(a\),请找一个子序列使得 \(a_n\) 被选中。 相邻两个间距离不超过 \(d\)。 比该序列中前面所有数大的数最多。 赛场上考虑了一个 dp,但因为错解想了很久, 没有优化成功。 \(f_i\) 表示从后面到 \(i\) 的最大答案,那么转移的条件就是 \(a_j > a_i 阅读全文
posted @ 2021-10-06 07:59 Acfboy 阅读(107) 评论(0) 推荐(0) 编辑
摘要: \(2000\) 分的题我赛场上居然没有做出 qwq 想得太复杂了。 \(n\) 列数每列取一个,\(m\) 种取法不行,求和最大的取法。 受到以前贪心讲课的一道题的影响,看到我就想着把前 \((m+1)\) 大的方案都求出来,存进 \((m+1)\) 个 twt 里面,然后排个序看看哪个没出现就是 阅读全文
posted @ 2021-09-22 18:59 Acfboy 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 今天模拟赛的 C 题。 树上每条路每个方向有一个费用,在树上选中一个点可以使所有道路中朝向该点的费用全部不计,\(q\) 个询问,每次询问取 \(x\) 个点后树的最小费用。 赛时写了个暴力又写了个 \(x=1\) 的换根 dp,可惜全部挂分了。其实 \(x=2\) 的点也非常的好拿,像求树的直径一 阅读全文
posted @ 2021-08-18 20:03 Acfboy 阅读(90) 评论(0) 推荐(0) 编辑
摘要: A 假的石子合并。 圆形石子合并,一次合并代价是两堆石子个数的积,求最小的代价和。 容易发现不管怎么并每一堆石子都要和其它的乘一次,所以答案就是 \(\sum_{i=1}^{n-1} \sum_{j=i+1}^ni\times j\),可以边加边乘优化到线性。 开始以为要什么神奇的 GarsiaWa 阅读全文
posted @ 2021-08-17 19:13 Acfboy 阅读(57) 评论(0) 推荐(0) 编辑
摘要: Beihang round & Chinese round 的题,本想着这场重新回到 Candidate Master,可是再一次验证了 Chinese Round 必掉分的理论。 如果做出 E 可就翻盘了啊 qwq 求出满足以下条件的整数数组 \(a\) 个数 长度为 \(n\) 和不超过 \(m 阅读全文
posted @ 2021-08-16 18:56 Acfboy 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 刚刚在打洛谷月赛,B 卡了很久莫名 TLE. 读了 C++ Reference 发现,operator += 的复杂度是这样的 Unspecified, but generally up to linear in the new string length. 什么!居然是长度! 包括 push_ba 阅读全文
posted @ 2021-08-13 15:51 Acfboy 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 做了这题我发现 我不懂单源最短路。 BF 还是有用的。 给出有向图,求单源最长路,或指出有环。 开始时觉得这不是直接写个 spfa 记录一下每个点更新次数解决?然后就 WA 了。 其实这是一个严重的历史遗留问题,即学习最短路算法时不经 BF 直接学习并记下 SPFA。 所以本博客又名《从 BF 到 阅读全文
posted @ 2021-08-11 16:33 Acfboy 阅读(81) 评论(0) 推荐(0) 编辑
摘要: \(n\) 个数中选出若干个,使乘积个位是 \(d\),如有多种,输出积最大的那种。 开始想的是取个模,由于 \(0 \to 9\) 的幂次在模 \(10\) 下的循环都很少,可以预处理出所有的可能数,但是这样没有办法找出乘积最大的。 这最大的问题还是得靠 dp,\(f_{i, j}\) 表示前 \ 阅读全文
posted @ 2021-08-11 11:18 Acfboy 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 给定以 \(1\) 为根的 \(n\) 个节点的一棵树,每个节点上有 \(a_i\) 个人,每个人可以选择往任意子节点走,直到走到叶子节点为止,问最后人最多的叶子节点最少有多少人。 最少的最多嘛!那就二分!很容易想到验证的方法,因为一个点可以到下面任意一个叶子,所以记录一下下面叶子最多能容纳的和就可 阅读全文
posted @ 2021-08-10 11:24 Acfboy 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 这题要是场切可改命了啊! 太可惜了,如此接近正解。 给定 \(n\) 行无限长的 01 串,求最少删除几个满足相邻的上下有连续 \(1\),输出方案。 死就死在这个输出方案上。 看到题先考虑 dp,\(f_i\) 是到 \(i\) 的答案。 得到方程 \(f_i = \min \{f_j + i - 阅读全文
posted @ 2021-08-10 10:09 Acfboy 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 遇到了一道神仙题 什么是神仙题? 不需要什么神奇技巧,也没啥高级算法,但就是想不出来。 求 \(\sum_{i=1}^n |p_i - i| = k\) 的 \(1 \to n\) 排列数。 板的题解写得非常好。 首先模拟一下可以抽象出这个移动的步数的模型,然后就啥也想不到了,更想不到是这样的一个简 阅读全文
posted @ 2021-08-09 09:48 Acfboy 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 这场比赛两题都用了复杂的做法 “山路十八弯”,C 就一离散化被我搞得那么复杂,这 E 一简单 01 bfs 又被我整了个细节巨多的做法。 从 \((1, 1)\) 走到 \((n, m)\),只能走在 . 上不能走在 # 上,每次可以消掉 \(2 \times 2\) 的 #,求最少消掉几次才能到终 阅读全文
posted @ 2021-08-09 08:20 Acfboy 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 求对所有 \(k \in [1, n-1]\) 能不能把树分成若干条长 \(k\) 的链。 《赛道修建》没学透啊,拼个链都不记得了。 NOIP2018 赛道修建中的拼链方法 求得每个儿子剩下来的链长度(从下往上跨过一个点的链最多一条)后用双指针拼上。 具体地: 递归求解每个儿子生下来的长度并记录。 阅读全文
posted @ 2021-08-07 16:23 Acfboy 阅读(26) 评论(0) 推荐(0) 编辑