题解| CF1561D2. Up the Strip(递推)

题目链接:Here

这个思路学习自 Harris-H ,考虑递推而不是DP

与 D1 不同,开始考虑 fi1fi

显然操作 1 多了 fi1 ,操作2 多了 f1

所以 fi=2fi1+1

除此外,所有 i 的因数都会相对于 (i1)1 ,因为

i=4,42=2,412=1

类似素数筛,需要更新

  • O(n log n)

注意 f2 特判

const int N = 4e6 + 10;
ll f[N];
int main() {
    cin.tie(nullptr)->sync_with_stdio(false);
    ll n, m; cin >> n >> m;
    f[1] = 1;
    for (int i = 2; i <= n; ++i) {
        if (i == 2) f[i] = 2;
        else f[i] = (f[i] + 2 * f[i - 1] + 1) % m;
        ll cnt = (f[i] - f[i - 1]) % m;
        for (int j = i + i; j <= n; j += i)f[j] += cnt;
    }
    cout << (f[n] + m) % m;
}
posted @   RioTian  阅读(66)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 5. Nginx 负载均衡配置案例(附有详细截图说明++)
历史上的今天:
2020-08-25 题解 CF1388A 【Captain Flint and Crew Recruitment】(思维、贪心)
2020-08-25 BZOJ 2038: [2009国家集训队]小Z的袜子【莫队算法裸题】
点击右上角即可分享
微信分享提示