随笔分类 - 算法竞赛 / 好题记录
摘要:prrblem 有个常规套路:每次选取一个后缀的物品,就可以保证选择的物品数量单调不降。因此将物品价值作后缀和处理,每次选取一个后缀的物品。 要满足“选取时间单调不降”的性质,可以对 数组这样处理:将所有时间取后缀最小值,得到一个单调不降的序列。按照这个序列与按照原序列选是等价的。 采用
阅读全文
摘要:H 贡献法 考虑计算01串中每一位对答案的贡献并求和: 由于每个连续段的贡献只有1,故可设定一个连续段的贡献是由这个连续段的第一个数字造成的。那么计算某一位的贡献,就只需要让这个数字成为某个连续段的开头即可。 具体地,假设计算第 位且 。要计算这一位对答案的贡献,则要让这一
阅读全文
摘要:题目链接:problem 大致意思就是给定一个0~9字符串,计算所有结尾非0,且能被结尾数字整除的子串个数。 很容易想到能dp,但是如何推导是一个难点。具体需要利用到模运算式子来推导。 直接参照灵神题解:editoral 注意单独一个非0数字也合法,在每一个位置的转移前要赋上初值。
阅读全文
摘要:最近刚学完主席树,找了道题巩固一下,还是非常有收获的。 题目链接:problem 若只让求 ,则还是比较简单的——用权值树状数组维护 路径上的数,每次查一下在 递归路径中 当前结点值 的结点数量,累加起来即为 。 可是题目要求将\(f(1)到f(n)\
阅读全文
摘要:一道练习单调栈 + 单调队列的好题 题目链接:problem 对于求合法子数组数量的题目,可以先考虑传统的枚举右端点,二分左端点的套路。此题用这种方法恰好可行,因为对于一个序列,左端增加一个数不会让操作数更少。因此对于固定右端点,合法的左端点一定是一段区间。 所以现在问题转化为:用双指针枚举子区间左
阅读全文