cf954H
挖我自闭了这是什么东西啊。
给出一棵深度为
的树,其中深度为
的节点有
个儿子。问树上的简单路径中长度在
之间的每个有多少条。
表示对于在
层的
个节点,向下走
步的方案数
表示对于在
层的
个节点,向上走
步的方案数
然后我们可以得到这样的递推式。
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的更多相关文章
- CF954H Path Counting
一开始的想法是枚举路径的 \(\rm LCA\) 然后再枚举两边的深度,但是这样无论如何我都只能做到 \(O(n ^ 3)\) 的复杂度. 只能考虑换一种方式计数,注意到点分治可以解决树上一类路径问题 ...
随机推荐
- pygame-KidsCanCode系列jumpy-part2-加速度与摩擦力
上一节,我们整理了一个游戏开发的新框架(即:Game类),本节将运用这个框架,实现基本的加速度及摩托力效果. 先定义游戏的精灵(下面代码命名为sprites.py) from part_02.sett ...
- ORACLE数据恢复方法(提交事务也可以)
今天在操作数据库的时候,发现数据操作错误,想要恢复,但是没有用事务,按理说,设置成不默认提交事务,此时所做的各种操作都没有反应到数据库中.这时,你可以rollback事务,撤销所有未提交的修改.不过, ...
- [Web 前端] mobx教程(五)-Mobx常见问题及解决方案(1)Mobx使用严格模式
copy from : https://blog.csdn.net/smk108/article/details/83185745 mobx在严格模式下,不允许在 action 外更改任何状态.但是不 ...
- ELK架构设计
1.架构一 2.架构二 3.架构三 4.架构四 示例1: 示例二: ELKB简述 E:Elasticsearch 是一个基于Lucene的分布式搜索和分析引擎,具有高可伸缩.高可靠和易管理等特点.支持 ...
- 关于jmeter命令行执行.jmx文件出现Error in NonGUIDriver java.lang.RuntimeException: Could not find the TestPlan c
- ORACLE通过SQL将一行数据转换为多行
转换前和需要转成的格式如下图: sql语句如下: , ; 效果如下:
- python3 图片文字识别
最近用到了图片文字识别这个功能,从网上搜查了一下,决定利用百度的文字识别接口.通过测试发现文字识别率还可以.下面就测试过程简要说明一下 1.注册用户 链接:https://login.bce.baid ...
- 资源贴——以备时时查询用
目录区 AI教程 AI教程 1.AI教程!教你绘制小清新巴士 2.AI教程!如何使用基础图形来绘制消防插画 3.AI教程!教你绘制秋日插画 4.AI教程!教你制作色彩分明的街边场景插画 ...
- .Net混淆工具和反混淆工具
一.简介 本文给大家列举一些常用的.net程序反破解代码混淆工具.同时也列取一些反混淆工具. 二.混淆工具 Agile.NET (aka CliSecure) Babel.NET CodeFort C ...
- 对Faster R-CNN的理解(2)
2. 区域建议网络 区域建议网络(Regional Proposal Network, RPN),根据特征图上每一个点的向量,为这个点生成k个矩形建议框.每一个点输出的内容包括:reg层4个输出x.y ...