博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51nod1582-n叉树
阅读量:7114 次
发布时间:2019-06-28

本文共 2041 字,大约阅读时间需要 6 分钟。

有一棵n叉树,深度是无限的,每个结点有n个儿子。从左到右编号为1到n号儿子,第i号儿子离该结点的距离是di。现在要统计一下距离根结点不超过x的结点有多少个。

数字比较大对 109 + 7 取余后输出。

样例解释:

图中黄色的结点是距离根不超3的。

Input
单组测试数据。第一行有两个整数n和x (1≤n≤10^5,0≤x≤10^9),表示每个结点的儿子数目,以及上文提到的x。第二行有n个整数d1,d2,d3,…,dn (1≤di≤100)。
Output
输出结果占一行。
Input示例
样例输入13 31 2 3
Output示例
样例输出18 暴力DP很好想,f[i]表示到根节点深度为i的有几个,f[i]=sigma(f[i-j]*cnt[j]),j=1->100 这样就可以用个矩阵来描述啦,意会一下

 

放上大佬NBC的代码就是上面的思路,对于边界的情况我不是很懂,如有大佬看懂请尽快发表。
#include 
#include
using namespace std;int I(){ int r = 0, c; do c = getchar(); while (c < 48 || c > 57); do r = (r << 3) + r + r + (c - 48), c = getchar(); while (c > 47 && c < 58); return r;}const long long MOD = 1000000007;int N, X, cnt[101];long long ans[101], bit[101][101];void push(){ static long long tmp[101]; for (int i = 0; i < 101; i++) { tmp[i] = 0; for (int j = 0; j < 101; j++) if ((tmp[i] += bit[i][j] * ans[j]) > 8223372024854775771LL) tmp[i] %= MOD; } for (int i = 0; i < 101; i++) ans[i] = tmp[i] % MOD;}void twice(){ static long long tmp[101][101]; for (int i = 0; i < 100; i++) for (int j = 0; j < 100; j++) { tmp[i][j] = 0; for (int k = 0; k < 101; k++) if ((tmp[i][j] += bit[i][k] * bit[k][j]) > 8223372024854775771LL) tmp[i][j] %= MOD; } for (int i = 0; i < 101; i++) for (int j = 0; j < 101; j++) bit[i][j] = tmp[i][j] % MOD;}int main(){ N = I(), X = I(); for (int i = 1; i <= N; i++) cnt[I()]++; ans[0] =ans[100] = 1; for (int i = 0; i < 99; i++) bit[i + 1][i] = 1; for (int i = 0; i < 100; i++) bit[0][i] = cnt[i + 1]; bit[0][100] = bit[100][100] = 1; for(int i=0;i<=50;i++) { for(int j=0;j<=50;j++) cout<
<<' '; cout<
>= 1) { if (X & 1) push(); twice(); } printf("%lld\n", ans[0]); return 0;}

 

转载于:https://www.cnblogs.com/dancer16/p/7355396.html

你可能感兴趣的文章
apache配置
查看>>
入门笔记上面的3n+1问题的思考
查看>>
阿里云 Aliplayer高级功能介绍(九):自动播放体验
查看>>
我的友情链接
查看>>
2012-12-22
查看>>
我的友情链接
查看>>
Scala自己打的jar包不能够读取自己jar包里面的如Properties这样的文件
查看>>
找出apache日志中访问量最大的IP
查看>>
欢迎访问独立私人日志
查看>>
python调用dll
查看>>
数据事物嵌套实验和结论
查看>>
linux LVS
查看>>
LAMP平台部署及应用(二) -- 构建Discuz!论坛服务器
查看>>
反向代理负载均衡模块详述
查看>>
Shell脚本--监控mysql的队列,队列超过300告警
查看>>
HttpClient4.x send request over SSL
查看>>
天益SSL /IPSEC ×××网关设备
查看>>
Ubuntu Server 18.04 通过 nvm 安装 node
查看>>
NSArray数组
查看>>
Apache2.0x 开启gzip压缩
查看>>