首页 > 其他分享 >F - Hop Sugoroku

F - Hop Sugoroku

时间:2024-01-17 19:34:22浏览次数:30  
标签:frac cdot times Sample int Hop Sugoroku Squares

F - Hop Sugoroku

Problem Statement

There is a row of $N$ squares labeled $1,2,\dots,N$ and a sequence $A=(A_1,A_2,\dots,A_N)$ of length $N$.
Initially, square $1$ is painted black, the other $N-1$ squares are painted white, and a piece is placed on square $1$.

You may repeat the following operation any number of times, possibly zero:

  • When the piece is on square $i$, choose a positive integer $x$ and move the piece to square $i + A_i \times x$.
    • Here, you cannot make a move with $i + A_i \times x > N$.
  • Then, paint the square $i + A_i \times x$ black.

Find the number of possible sets of squares that can be painted black at the end of the operations, modulo $998244353$.

Constraints

  • All input values are integers.
  • $1 \le N \le 2 \times 10^5$
  • $1 \le A_i \le 2 \times 10^5$

Input

The input is given from Standard Input in the following format:

$N$
$A_1$ $A_2$ $\dots$ $A_N$

Output

Print the answer as an integer.


Sample Input 1

5
1 2 3 1 1

Sample Output 1

8

There are eight possible sets of squares painted black:

  • Square $1$
  • Squares $1,2$
  • Squares $1,2,4$
  • Squares $1,2,4,5$
  • Squares $1,3$
  • Squares $1,4$
  • Squares $1,4,5$
  • Squares $1,5$

Sample Input 2

1
200000

Sample Output 2

1

Sample Input 3

40
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Sample Output 3

721419738

Be sure to find the number modulo $998244353$.

 

解题思路

  dp 的部分还是很容易想到的。定义 $f(i)$ 表示在前 $i$ 个元素中且第 $i$ 个元素染成黑色的所有方案的数量。根据从第 $i$ 个位置出发可到达的下标来进行状态转移,因此状态转移方程就是 $f(i) \to f(j), \, j = i + k \cdot a_i, \, k \in \mathbb{Z}$。其中状态转移的计算量是 $O(\frac{n}{a_i})$ 级别,如果每个 $a_i$ 都很小,那么整个 dp 的时间复杂度就会变成 $O(n^2)$。因此只有当 $a_i$ 比较大时,这种朴素转移的计算量才会比较小。

  这时候就可以考虑用根号分治了,取 $b = 450$(大致 $\sqrt{2 \cdot 10^5}$ 级别)。当 $a_i > b$ 时直接朴素转移,那么这部分整体的时间复杂度大致是 $O(n \cdot \frac{n}{b})$。当 $n \leq b$ 时就不能直接转移了,反过来考虑 $i$ 能从哪些下标 $j, \, (j < i)$ 转移过来,即满足 $j + k \cdot a_j = i$ 的下标 $j$。如果 $a_j$ 是确定的,那么就有 $j \equiv i \pmod{a_j}$。因此用 $s[d][r]$ 来统计满足 $j \equiv r \pmod{d}$ 的 $f(j)$ 的总和,当枚举到 $i$ 时,遍历 $d \in [1, b]$,把 $s[d][i \bmod d]$ 累加到 $f(i)$ 中,表示可以从 $a_j \leq b$ 且 $j \equiv i \pmod{a_j}$ 的下标 $j$ 转移到位置 $i$。另外当 $a_i \leq b$ 时,只需让 $s[a_i][i \bmod a_i]$ 累加 $f(i)$ 即可。这部分整体的时间复杂度为 $O(n \cdot b)$。

  考虑两种情况,那么总的时间复杂度就是 $O(n \cdot \frac{n}{b} + n \cdot b)$,其中根据基本不等式 $\frac{n}{b} + b \geq 2 \sqrt{\frac{n}{b} \cdot b} = 2 \sqrt{n}$,当 $\frac{n}{b}$ 和 $b$ 相等即均取 $\sqrt{n}$ 时,等号成立,因此这里 $b$ 大概取 $450$。

  AC 代码如下,时间复杂度为 $O(n \sqrt{n})$:

#include <bits/stdc++.h>
using namespace std;

const int N = 2e5 + 10, M = 460, mod = 998244353;

int a[N];
int f[N];
int s[M][M];

int main() {
    int n;
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) {
        scanf("%d", a + i);
    }
    f[1] = 1;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= 450; j++) {
            f[i] = (f[i] + s[j][i % j]) % mod;
        }
        if (a[i] <= 450) {
            s[a[i]][i % a[i]] = (s[a[i]][i % a[i]] + f[i]) % mod;
        }
        else {
            for (int j = i + a[i]; j <= n; j += a[i]) {
                f[j] = (f[j] + f[i]) % mod;
            }
        }
    }
    int ret = 0;
    for (int i = 1; i <= n; i++) {
        ret = (ret + f[i]) % mod;
    }
    printf("%d", ret);
    
    return 0;
}

 

参考资料

  Editorial - AtCoder Beginner Contest 335 (Sponsored by Mynavi):https://atcoder.jp/contests/abc335/editorial/9038

  暴力美学——浅谈根号分治:https://www.luogu.com.cn/blog/Amateur-threshold/pu-li-mei-xue-qian-tan-gen-hao-fen-zhi

标签:frac,cdot,times,Sample,int,Hop,Sugoroku,Squares
From: https://www.cnblogs.com/onlyblues/p/17970725

相关文章

  • 谈谈我使用shopee买家通系统的真实感受
    我作为一位虾皮卖家,亲身体验了Shopee买家通系统,想分享一下我的真实感受。这款营销工具声称采用了最新的防指纹防关联技术,具备自动批量注册买家号、自动加购、测评、补单等功能,一时间引起了我的极大兴趣,我从以下几点来详细分享一下。1、内置了防指纹技术系统内置的防指纹技术给我留......
  • Shopee买家通系统:领先科技助力卖家全自动化营销
    在虾皮卖家和服务商的竞争激烈的市场环境下,不断追求创新和效率提升是至关重要的。近期推出的Shopee买家通系统正是基于最新的防指纹防关联技术,以其独特的能力完全模拟真人运行,实现全自动化操作,为卖家们提供了一款卓越的营销工具。1、内置防指纹技术Shopee买家通系统内置先进的防指......
  • 如何给shopify的URL做301跳转
    很多shopify的运营者或者推广者由于缺货或者货物变更,又或者自己更换了使用的主题,导致自己的URL结构发生了变化,由于不想浪费掉自己原有URL的流量,就想做个301跳转,让自己新的网址来承接原有的流量。接下来给大家介绍下如何给自己的URL做301跳转。首先你要在后台先访问你的所要修改......
  • shopping
    thissweaterismadefromcompletelynaturalmaterials.what'swrongwiththiszipper?itwon'tgoup.he'sbeenbuyingalotofshoeslately.youshouldn'tbringpetsintothestore.youunderwearismadefromsuchlowqualitymateria......
  • 介绍一个功能强大的shopify app——TINYIMG
    各位观众老爷,南来的北往的,东去的西走的,今天给大家推荐一个功能很强大的shopifyapp当当当那就是tinyimg这个app有多牛逼呢,且听我慢慢道来首先这个app可以用来优化图片大小,给你的网站提提速然后这个app还可以自动将图片修改为容量更小的JPG格式,大大减少了图片的容量,注:webp......
  • Photoshop 2024:数字图像处理的行业标准 mac/win版
    Photoshop2024是一款功能强大的数字图像处理软件,被广泛用于创意设计和视觉效果制作。这款软件提供了广泛的工具和功能,使用户能够进行各种复杂的图像编辑和合成工作。→→↓↓载Photoshop2024mac/win版Photoshop2024在图像处理方面具有许多优势。首先,它支持各种图像格式,包括......
  • 如何给shopify motion主题的产品系列添加description
    一、Description是什么Description是一种HTML标签类型,通过指定Description的内容,可以帮助搜索引擎以及用户更好的理解当前网页包含的主要了内容。二、Description有什么作用1、基本作用,对于网站和网页做一个简单的说明。2、吸引点击,description可以起到吸引点击的作用。3、排......
  • shopify motion主题如何更换视频
    有很多做跨境电商的朋友,为了吸引用户在网站停留更多时间,往往会选择将自己的网站做的天花乱坠,视频、GIF等各式夺目的的元素搭配在网站首页。但是后期想要更换视频的时候,如果没有相关经验的小白不知道如何更换视频,或者更换视频之后发现无法正常勃发,接下来就简单的介绍下shopifymot......
  • 轻松拥有虾皮买手号,使用Shopee买家通系统注册简单高效
    近期,有不少虾皮买手用户分享了他们使用Shopee买家通系统进行自动化注册的愉快经历。这款软件目前支持菲律宾、泰国、马来西亚、越南、巴西、印度尼西亚等多个国家,为用户提供了更便捷的注册方式。首先,用户需要准备一个能够接收短信的手机号。由于虾皮买家号目前基本上都是通过手机号......
  • Shopee买家通系统:轻松获取虾皮买手号的智能利器
    近来,有一款强大的软件引起了广泛关注,它就是Shopee买家通系统,为用户提供了自动化注册虾皮买手号的便捷途径。目前,该软件已覆盖菲律宾、泰国、马来西亚、越南、巴西、印度尼西亚等多个国家,为用户提供更广泛的服务。软件注册流程极为简单,虾皮买家号目前基本上都是通过手机号注册的,因此......