随笔分类 - 算法竞赛
CF/ABC/XCPC比赛的补题记录
摘要:prrblem 有个常规套路:每次选取一个后缀的物品,就可以保证选择的物品数量单调不降。因此将物品价值作后缀和处理,每次选取一个后缀的物品。 要满足“选取时间单调不降”的性质,可以对 数组这样处理:将所有时间取后缀最小值,得到一个单调不降的序列。按照这个序列与按照原序列选是等价的。 采用
阅读全文
摘要:949 C 限时每日一题day2。这一次做出来了,但时间花得有点多,再接再厉吧。 一个不难的构造题。 首先能发现 以任意两个非 的相邻两数为端点 形成区间的答案 与 其他位置的答案 是独立的,因此问题转化为给定两个正数 ,中间夹着若干个 ,能否正确填充。 将数
阅读全文
摘要:D 三分 & 反悔贪心 计算最大匹配数很简单,难点在于计算每种匹配数情况贡献的最大值。 贪心地想也能发现,对于每个集合,若固定选择线段的个数 ,最大贡献为: 这个可以用前缀和预处理出来,以做到对于某个给定匹
阅读全文
摘要:A 每次将当前 中以最左侧的连续一段 开头的后缀移动到 ,在 中留下这段 ,将剩下的后缀再移回 ,循环模拟即可。 code B 容易发现分数一定不会增加,只能尽可能保持不变。而题中还要在在分数最大情况下最小化数组长度,可以发现:只能删
阅读全文
摘要:E 比较有意思的思维题 按下标可以分为若干个组,先对每组内升序排序,再按值排序,一定是最优的。目前还不太会证明,以后有机会再补充证明,具体细节见代码。 code F 双指针 + 模运算式推导 首先特判掉 的情况,因为只有不含0的数组才符合要求,所以只需要将所有
阅读全文
摘要:H 贡献法 考虑计算01串中每一位对答案的贡献并求和: 由于每个连续段的贡献只有1,故可设定一个连续段的贡献是由这个连续段的第一个数字造成的。那么计算某一位的贡献,就只需要让这个数字成为某个连续段的开头即可。 具体地,假设计算第 位且 。要计算这一位对答案的贡献,则要让这一
阅读全文
摘要:一般这种题都涉及到概率。对于这种类型题目,直接用递归式表示状态来进行状态间的转移,并在计算过程中记忆化即可。若在转移式两侧出现了相同的状态,直接移项即可。 牛客周赛80 G ABC 350 E
阅读全文
摘要:题目链接:problem 大致意思就是给定一个0~9字符串,计算所有结尾非0,且能被结尾数字整除的子串个数。 很容易想到能dp,但是如何推导是一个难点。具体需要利用到模运算式子来推导。 直接参照灵神题解:editoral 注意单独一个非0数字也合法,在每一个位置的转移前要赋上初值。
阅读全文
摘要:多项式乘法可以用 逐项得到,但不高效。而FFT可以用 快速计算 利用FFT来解决算法题的例子: ABC392 G 要找给定数组中满足 的升序三元组 的数量,可以通过构造多项式的方式巧妙计算: 设\(a=[1,2
阅读全文
摘要:问题:给定 ,对于每个 ,求出从 左侧开始数 第一个和第二个 元素值 的位置 只求第一个,可以用单调栈来做。但要得到第 个,应该怎么做呢? 将数组按顺序构建双向链表 先将原数组按值排序,排序时要记录每个元素原来的
阅读全文
摘要:期望定义式 期望的线性性 线性指的是加法和数乘。 和式的期望等于和式中所有项的期望之和,即: \[E(\sum_{i=1}^{n}X_{i})=\sum_{i=1}^{n}E(X_{i})
阅读全文
摘要:第一场区域赛,惨遭打铁。赛时只出了BCI。赛后补了DG,发现两道题都没有那么难,只能说还得加训。。。 相对简单一些,就不写题解了。 code_C B 补得最难绷的一题。先写了一个栈维护 路径的写法, ;又写了一个 维护结点之间访问关系的写法,\(
阅读全文
摘要:赛时 题(实际上是 题,有道题数据水而被 了...) E 这道题赛时做出来了,但看题解时看到了一个值得学习的重要结论。 结论:要将一个数组中的所有数变为相同的数 ,操作为加 或减 ,那么最小代价 是中位数。 (若不知道这个
阅读全文