zoukankan      html  css  js  c++  java
  • 题解【Codeforces414B】Mashmokh and ACM

    题面

    考虑设 (dp_{i,j}) 表示已经确定了前 (i) 个数,且最后一个数是 (j) 的方案数。

    转移很容易想到:

    • (v_j) 表示 (j) 的所有约数的集合,那么就有 (dp_{i,j}=sumlimits_{kin v_j}dp_{i-1,k})

    预处理出 (v_j),然后直接转移即可。

    #include <bits/stdc++.h>
    
    using namespace std;
    
    inline int gi()
    {
        int f = 1, x = 0; char c = getchar();
        while (c < '0' || c > '9') {if (c == '-') f = -1; c = getchar();}
        while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
        return f * x;
    }
    
    const int INF = 0x3f3f3f3f, N = 2003, M = N << 1, mod = 1000000007;
    
    int n, m;
    int dp[N][N];
    vector <int> v[N];
    
    int main()
    {
        n = gi(), m = gi();
        for (int i = 1; i <= n; i+=1)
        	for (int j = 1; j * j <= i; j+=1)
        		if (i % j == 0)
        		{
        			v[i].push_back(j);
        			if (j * j != i) v[i].push_back(i / j);
        		}
        dp[0][1] = 1;
        for (int i = 1; i <= m; i+=1)
        	for (int j = 1; j <= n; j+=1)
        	{
        		for (auto x : v[j])
        			(dp[i][j] += dp[i - 1][x]) %= mod;
        	}
        int ans = 0;
        for (int i = 1; i <= n; i+=1)
        	(ans += dp[m][i]) %= mod;
        printf("%d
    ", ans);
        return 0;
    }
    
  • 相关阅读:
    杂项_做个游戏(08067CTF)
    杂项_白哥的鸽子
    杂项_隐写3
    杂项_come_game
    杂项_多种方法解决
    杂项_闪的好快
    杂项_隐写2
    杂项_宽带信息泄露
    杂项_啊哒
    杂项_猜
  • 原文地址:https://www.cnblogs.com/xsl19/p/13026140.html
Copyright © 2011-2022 走看看