专栏文章
Again Counting Stars 糖糖做法
个人记录参与者 3已保存评论 2
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @min1okm6
- 此快照首次捕获于
- 2025/12/01 19:07 3 个月前
- 此快照最后确认于
- 2025/12/01 19:07 3 个月前
前面的转化不说了,现在要解决的问题如下:
给出单调不增数组 ,你需要对每个 计数有多少个数组 满足:
-
单调不增,且 ;
-
若存在 ,则所有这样的 构成一个区间,区间包含 或 。
这里和官方题解是完全反着的,相当于做的是后缀和而不是前缀和。
然后把序列 reverse,相当于 和 都是单调不降的。
这个时候就相当于要对于每个 计算 是第一个 的位置的方案数,以及 是最后一个 的位置的方案数。称前者为 ,后者为 。
我们考虑暴力 dp 是怎么做的,相当于记录 表示 的方案数,然后转移是先做前缀和再删掉一个前缀。
我们熟知对多项式求前缀和还是多项式,但是删掉一个前缀的处理比较烦。
于是考虑不要求不合法的位置是 ,只保证合法的位置的值是对的。
此时相当于 变成 在 的前缀和, 是没被删的最小位置。
可以看出 显然是多项式,于是直接维护连续点值拉插可以做到 求一个 以及 作为起点对每个 的贡献。
于是求一个 相当于对所有 求它们作为起点的贡献和,相当于维护 之后多一个加入 这个新起点的转移,也就是全局 。
于是求所有 可以做到 ,而求所有 就直接把做法转置就好了。
这样我们可以跑出最优解 倍的时间。
相关推荐
评论
共 2 条评论,欢迎与作者交流。
正在加载评论...