Codeforces 954H Path Counting


LINK


题目大意:给你一棵n层的树,第i层的每个节点有a[i]个儿子节点,然后问你树上的简单路径中长度在1~n*2-2之间的每个有多少条


因为直接计算过每个节点的路径并不好算
所以可以算一算从每个节点出发的路径的个数
f[i][j]表示对于在i层的1个节点,向下走行走j步的方案数
g[i][j]表示对于在i层的1个节点,第一步向上行走共走j步的方案数

然后DP式子比较显然
f[i][j]=a[i]∗f[i+1][j−1]
g[i][j]=g[i−1][j−1]+[2≤j]∗f[i][j−2]
然后这样每条路径会在计算的时候被计算两次,所以乘上2的逆元就好了

但是这样会MLE,就很完蛋

然后我们发现g式子DP的时候f只会用到i相等,j比他小的
又因为g的DP式子中是i从小到大来转移的
所以直接在f上进行修改,i从小到大,j从大到小,然后就不会卡空间了

也可以滚动,不过要处理一堆东西,懒得写


 #include<bits/stdc++.h>
using namespace std;
#define N 5010
#define Mod 1000000007
#define inv2 500000004
int f[N][N<<];
int n,a[N],s[N];
int ans[N<<]={};
int add(int a,int b){return (a+b)%Mod;}
int mul(int a,int b){return 1ll*a*b%Mod;}
int main(){
scanf("%d",&n);
for(int i=;i<n;i++)scanf("%d",&a[i]);
s[]=;for(int i=;i<=n;i++)s[i]=mul(s[i-],a[i-]);
for(int i=;i<=n;i++)f[i][]=;
for(int i=n-;i>=;i--)
for(int k=;k<=n-;k++){
f[i][k]=mul(a[i],f[i+][k-]);
ans[k]=add(ans[k],mul(s[i],f[i][k]));
}
for(int i=;i<=n;i++)f[][i]=;
for(int i=;i<=n;i++)
for(int k=n*-;k>=;k--){
f[i][k]=f[i-][k-];
if(k>=)f[i][k]=add(f[i][k],mul(a[i-]-,f[i][k-]));
ans[k]=add(ans[k],mul(s[i],f[i][k]));
}
for(int i=;i<=n*-;i++)printf("%d ",mul(ans[i],inv2));
return ;
}

最新文章

  1. IOI2011ricehub米仓
  2. Extjs 3.4 复选框的,默认选中 ,禁用,(纯属于自己代码中需要,总结!)
  3. js设置输入框失去光标与光标选中时样式
  4. 51nod1757 大灾变
  5. dmp文件导入
  6. Cocos2d-x学习笔记(9)(CCTextFieldTTF使用输入框)
  7. 在Visual Studio 2017中发现的问题
  8. vue-修改vue项目运行端口号
  9. 出行服务类API调用的代码示例合集:长途汽车查询、车型大全、火车票查询等
  10. Vue2学习(1)
  11. Android之greenDao使用
  12. 软件工程(FZU2015) 赛季得分榜,第11回合(beta冲刺+SE总结)
  13. X1226 和 AT24C16 地址冲突问题
  14. navicate 远程无法链接linux上mysql数据库问题
  15. Spring Boot笔记四:日志框架介绍
  16. idea maven列表有问题的
  17. 课程二(Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization),第一周(Practical aspects of Deep Learning) —— 4.Programming assignments:Gradient Checking
  18. linux 下 pip 安装教程
  19. 菜鸟学Java(十)——分页查询
  20. asp.net 局域网中获取 client的机器名

热门文章

  1. HDU 3594 Cactus(仙人掌问题)
  2. Eclipse解决乱码问题
  3. IIS和ASP.NET MVC 管道处理模型
  4. Android DB那些事-数据库加密
  5. Microsoft&#39;s OWIN implementation, the Katana project
  6. [java]Stream API——map和flatMap的区别
  7. 毕业设计总结(1)-canvas画图
  8. 关于 MongoDB 复制集
  9. Android 版本升级涉及到的数据库数据迁移问题
  10. 页面title加icon