CF 1561

简介: 【7月更文挑战第20天】

CF 1561 D. Up the Strip 是 Codeforces 网站上的一道算法题目,题目要求从一个格子跳到另一个格子,有两种跳跃方式:一种是减法跳跃,即选择一个数 ( k ) 使得 ( k \in [1, n) ),从 ( n ) 跳到 ( n-k );另一种是除法跳跃,即选择一个数 ( k ) 使得 ( k \in (1, n] ),从 ( n ) 跳到 ( \lfloor \frac{n}{k} \rfloor )。题目要求计算从 ( n ) 号格子跳到 ( 1 ) 号格子的方案数,并且答案需要对给定的模数取模。

这个问题可以通过动态规划(DP)来解决。根据题目描述,可以设置状态 ( dp[i][j] ) 表示从 ( i ) 号格子出发,使用第 ( j ) 种跳跃方式的方案数。转移方程如下:

  1. ( dp[i][1] = \sum_{j=1}^{i-1} (dp[j][1] + dp[j][2]) ),表示使用减法跳跃。
  2. ( dp[i][2] = \sum_{j=2}^i (dp[\lfloor \frac{i}{j} \rfloor][1] + dp[\lfloor \frac{i}{j} \rfloor][2]) ),表示使用除法跳跃。

最终的答案为 ( dp[n][1] + dp[n][2] )。为了优化计算,可以使用数论分块的方法来减少时间复杂度,最终的时间复杂度可以达到 ( O(n \sqrt{n}) ) 。

#include <stdio.h>
typedef long long ll;
ll dp[200007][7], sum[200007][7];
int main(){
   
    int n, m;
    scanf("%d %d", &n, &m);
    for (register int i = 2; i <= n; i++){
   
        int half_i = i / 2;
        dp[i][1] = (sum[i - 1][1] + sum[i - 1][2] + 1) % m;
        dp[i][2] = i - half_i;
        for (register int j = 2, k; j <= half_i; j = k + 1){
   
            int ti = i / j;
            k = i / ti;
            dp[i][2] = (dp[i][2] + (dp[ti][1] + dp[ti][2]) * (k - j + 1) % m) % m;
        }
        sum[i][1] = (sum[i - 1][1] + dp[i][1]) % m;
        sum[i][2] = (sum[i - 1][2] + dp[i][2]) % m;
    }
    printf("%lld", (dp[n][1] + dp[n][2]) % m);
    return 0;
}
目录
相关文章
|
算法 搜索推荐 数据挖掘
AB实验设计
AB实验的原理、优缺点及流程
1768 0
AB实验设计
|
Linux 异构计算 Windows
Windows操作系统:指定网卡ping连通性
某些时候,板卡上留有两个及以上万兆网口,在没有其他FPGA板卡或者只是想测一下网口或者万兆光模块的通路时,可以通过回环互ping来验证下连通性
4055 0
|
存储 监控 安全
大厂案例 - 腾讯万亿级 Elasticsearch 架构实践1
大厂案例 - 腾讯万亿级 Elasticsearch 架构实践
398 0
|
Java BI 数据处理
如何在Java中实现Excel操作
如何在Java中实现Excel操作
|
7月前
|
安全 网络协议 网络安全
当虚拟机出现网络连接问题时,应该先检查Hyper-V的网卡连接配置
当虚拟机出现网络连接问题时,应首先检查Hyper-V的网卡配置。具体步骤包括:确认虚拟机运行状态、检查虚拟交换机类型和物理网卡连接、确保虚拟机网络适配器正确连接到虚拟交换机,并验证网络配置(IP地址等)。常见问题如虚拟交换机配置错误、网络适配器未连接或防火墙阻止连接,可通过重新配置或调整设置解决。必要时重启虚拟机和宿主机,查看事件日志或联系技术支持以进一步排查问题。
|
JavaScript 前端开发
react Or vue中引入animate.css
本文介绍了如何在React或Vue项目中引入animate.css库来使用动画效果,包括通过npm安装或在线链接引入,并展示了如何在React组件和Vue路由过渡中使用动画类。
293 0
|
弹性计算 人工智能 对象存储
来自通义万相的创意加速器:AI 绘画创作
【7月更文挑战第11天】来自通义万相的创意加速器:AI 绘画创作
|
图形学
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)(上)
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)
576 2
|
图形学
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版6(附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版6(附带项目源码)
340 1
|
定位技术 图形学 开发者
【用unity实现100个游戏之18】从零开始制作一个类CSGO/CS2、CF第一人称FPS射击游戏——基础篇1(附项目源码)
【用unity实现100个游戏之18】从零开始制作一个类CSGO/CS2、CF第一人称FPS射击游戏——基础篇1(附项目源码)
684 1