挖我自闭了这是什么东西啊。

给出一棵深度为  的树,其中深度为  的节点有  个儿子。问树上的简单路径中长度在  之间的每个有多少条。

 表示对于在  层的  个节点,向下走  步的方案数

 表示对于在  层的  个节点,向上走  步的方案数

然后我们可以得到这样的递推式。

 f[i][j]=a[i]*f[i+1][j-1]);
g[i][j]=(j>=2)*(a[i-1]-1)*f[i][j-2]+g[i-1][j-1]);
显然对于一条路径会算两次。所以最终答案除以 2
 即可。
你以为这就完了?
下面才是自闭的开始。
256M大概能开6e7?记不清了。。。所以我们只能开一个[5000][9999]这样纸的数组,然后滚来滚去滚来滚去。
ac代码:
 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9+;
int n;
int a[],c[];
int f[][],ans[];
int main(){
ios::sync_with_stdio(false);
cin>>n;c[]=;
for(int i=;i<n;i++)cin>>a[i];
for(int i=;i<=n;i++)c[i]=1ll*a[i]*c[i-]%mod;
for(int i=n;i>=;i--){
f[i][]=;
for(int j=;j<=n-i;j++){
f[i][j]=(1ll*a[i]*f[i+][j-])%mod;
ans[j]=(1ll*f[i][j]*c[i-]+ans[j])%mod;
}
}
for(int i=;i<=n;i++){
for(int j=*n-;j>=;j--){
f[i][j]=f[i-][j-];
if(i>&&j>)
f[i][j]=(1ll*(a[i-]-)*f[i][j-]+f[i][j])%mod;
ans[j]=(1ll*f[i][j]*c[i-]+ans[j])%mod;
}
}
for(int i=;i<=*n-;i++){
cout<<(mod+1ll)*ans[i]/%mod<<' ';
}
}

MLE ON TEST 01 代码:

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9+;
int n;
int a[];
int f[][],g[][];
int main(){
ios::sync_with_stdio(false);
cin>>n;a[]=;
for(int i=;i<n;i++)cin>>a[i];
for(int i=;i<=n;i++)
f[i][]=a[i],f[i][]=;
for(int i=;i<=n;i++)
g[i][]=,g[i][]=;
for(int i=n-;i>=;i--){
for(int j=;j<=n-i;j++){
f[i][j]=(1ll*a[i]*f[i+][j-])%mod;
}
}
for(int i=;i<=n;i++){
for(int j=;j<=*n-;j++){
g[i][j]=(1ll*(j>=)*(a[i-]-)*f[i][j-]+g[i-][j-])%mod;
}
}
for(int i=;i<=n;i++)a[i]=1ll*a[i]*a[i-]%mod;
for(int i=;i<=*n-;i++){
ll sum = ;
for(int j=;j<=n;j++){
sum=(sum+1ll*a[j-]*(f[j][i]+g[j][i])%mod)%mod;
}
cout<<sum/<<' ';
}
}
 

cf954H的更多相关文章

  1. CF954H Path Counting

    一开始的想法是枚举路径的 \(\rm LCA\) 然后再枚举两边的深度,但是这样无论如何我都只能做到 \(O(n ^ 3)\) 的复杂度. 只能考虑换一种方式计数,注意到点分治可以解决树上一类路径问题 ...

随机推荐

  1. django之ORM补充

    本篇导航: QuerySet 中介模型 查询优化 extra 一.QuerySet 1.可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句 ...

  2. 专门为ADO二层升三层的咏南中间件(特种用途)

    专门为ADO二层升三层的咏南中间件(特种用途) 演示下载:链接: https://pan.baidu.com/s/1bulGBIZ6A1nkeErxIrGsGA 密码: 22dk 解压后运行ynmai ...

  3. mount 命令用法

    mount 功能: 加载指定的文件系 统:mount可将指定设备中指定的文件系统加载到 Linux目录下(也就是装载点).可将经常使用的设备写入文件/etc/fastab,以使系 统在每次启动时自动加 ...

  4. 资源贴——以备时时查询用

    目录区 AI教程   AI教程 1.AI教程!教你绘制小清新巴士   2.AI教程!如何使用基础图形来绘制消防插画   3.AI教程!教你绘制秋日插画   4.AI教程!教你制作色彩分明的街边场景插画 ...

  5. 阿里的Json解析包FastJson使用

    阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征: 速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser ...

  6. 2012年NOIP普及组 摆花

    题目描述 Description 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种 ...

  7. Linux下修改Mysql的用户(root)的密码的俩种方法

     from:https://www.cnblogs.com/daizhuacai/archive/2013/01/17/2865138.html   修改的用户都以root为列.一.拥有原来的myql ...

  8. 构建自己的 Smart Life 私有云(二)-> 连通 IFTTT & Slack

    博客搬迁至https://blog.wangjiegulu.com RSS订阅:https://blog.wangjiegulu.com/feed.xml 原文链接:https://blog.wang ...

  9. bootstrap-datepicker应用

    参考本人的github:https://github.com/gmqllf/Datepicker-for-Bootstrap (fork官方的) 一.使用datepicker for bootstra ...

  10. vue环境下安装npm,启动npm 修改js,css样式

    vue环境下修改js,css样式 1.在所在的项目项目的resource 文件夹下面,shift + 鼠标右键--在此处打开命令行窗口: 2.在打开的窗口执行: 安装npm:npm install 启 ...