首页 技术 正文
技术 2022年11月17日
0 收藏 626 点赞 3,003 浏览 1371 个字

传送门

好神啊

直接考虑一棵 \(n+m\) 个叶子的 \(k\) 叉树,根结点权值为 \(\sum_{i\in m}(\frac{1}{k})^{deep_i}\)

对于一个 \(deep\) 的序列

如果 \(\sum_{i\in m}(\frac{1}{k})^{deep_i}+\sum_{i\in n}(\frac{1}{k})^{deep_i}=1\)

那么一定可以构造出一棵 \(k\) 叉树满足要求

(从deep大到小考虑,除去 \(k\) 进位)

那么对于一个答案数 \(x\),它的每一位的数字(可以通过退位)和 \(=m\)

退位就是 \(+k-1\),那么也就是 \(\sum\equiv m(mod~k-1)\)

同理 \(1-x\) 的每一位的数字(可以通过退位)和 \(=n\)

设位数为 \(l\)

即 \(l(k-1)+1-\sum\equiv n(mod~k-1)\)

那么可以设 \(f_{i,j}\) 表示小数点后前 \(i\) 位,每一位的数字和为 \(j\),的不同的数字个数

每次判断 \(j\le m,i(k-1)+1-j\le n\) 且 \(j\equiv m(mod~k-1),l(k-1)+1-j\equiv n(mod~k-1)\)

满足则贡献答案

\(i\) 只需要枚举到 \(n+m\) 即可

\(dp\) 只需要前缀和优化,注意要记录后缀 \(0\)

# include <bits/stdc++.h>
using namespace std;
typedef long long ll;const int maxn(2005);
const int mod(1e9 + 7);inline void Inc(int &x, int y) {
x = x + y >= mod ? x + y - mod : x + y;
}inline void Dec(int &x, int y) {
x = x - y < 0 ? x - y + mod : x - y;
}inline int Add(int x, int y) {
return x + y >= mod ? x + y - mod : x + y;
}inline int Sub(int x, int y) {
return x - y < 0 ? x - y + mod : x - y;
}int n, m, k, f[maxn << 1][maxn][2], ans, s[maxn][2];inline int Check(int len, int sum) {
return sum % k == m % k && (len * k + 1 - sum) % k == n % k && len * k + 1 - sum <= n;
}int main() {
int i, j, r, t;
scanf("%d%d%d", &n, &m, &k), r = n + m, f[0][0][0] = 1, --k;
for (i = 1; i <= r; ++i) {
for (t = 0; t < 2; ++t)
for (s[0][t] = f[i - 1][0][t], j = 1; j <= m; ++j)
s[j][t] = Add(s[j - 1][t], f[i - 1][j][t]);
for (j = 0; j <= m; ++j) f[i][j][1] = Add(f[i - 1][j][0], f[i - 1][j][1]);
for (j = 1; j <= m; ++j)
for (t = 0; t < 2; ++t)
Inc(f[i][j][0], Sub(s[j - 1][t], j > k ? s[j - k - 1][t] : 0));
for (j = 0; j <= m; ++j) if (Check(i, j)) Inc(ans, f[i][j][0]);
}
printf("%d\n", ans);
return 0;
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,026
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,517
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,364
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,145
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,779
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,856