洛谷 P1472 奶牛家谱 Cow Pedigrees 题解
这道题我觉得是个不错的题;
根据题意可以较清晰的发现ans只和n和k有关;(因为输入的只有这两个数啊~);
那么设f[i][j]表示前i层用了j个节点的方案数,g[i][j]表示深度小于等于i并且用了j个节点的方案数总和;
对于一颗树,可以把它分成3部分:根节点,左字树,右子树;
对于一颗深度为i的树,左子树和右子树至少有一个达到了深度i-1;
所以转移方程是:f[i][j]+=f[i-1][k]*g[i-2][j-k-1]+f[i-1][j-k-1]*g[i-2][k]+f[i-1][k]*f[i-1][j-k-1];
g[i][j]+=g[i-1][j]+f[i-1][j];
另外一定要注意取模的细节!!!
#include <bits/stdc++.h>
#define p 9901
using namespace std;
int n,m;
int f[][],g[][];
int main()
{
cin>>n>>m;
f[][]=;
for(register int i=;i<=m;i++){
for(register int j=;j<=n;j+=){
for(register int k=;k<=j--k;k+=){
int tmp=;
if(k==j--k) tmp=;
f[i][j]+=tmp*((f[i-][j-k-]*g[i-][k])%p+(f[i-][k]*g[i-][j-k-])%p+(f[i-][k]*f[i-][j-k-])%p);
f[i][j]%=p;
}
}
for(register int j=;j<=n;j++){
g[i-][j]=(g[i-][j]+g[i-][j]+f[i-][j])%p;
g[i-][j]%=p;
}
}
cout<<f[m][n]%p<<endl;
}
洛谷 P1472 奶牛家谱 Cow Pedigrees 题解的更多相关文章
- 洛谷P1472 奶牛家谱 Cow Pedigrees
P1472 奶牛家谱 Cow Pedigrees 102通过 193提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 农民约翰准备 ...
- 洛谷 1472 奶牛家谱 Cow Pedigrees
[题解] DP题,我们用f[i][j]表示有n个节点.高度小于等于j的二叉树的个数.f[i][j]=sigma(f[t][j-1]*f[i-t-1][j-1]) t是1~i-1范围内的奇数. #inc ...
- P1472 奶牛家谱 Cow Pedigrees
题意:问你指定二叉树有几种 1.高度为k 2.节点数为n 3.每个点的度为0或2 爆搜------->30分QAQ 首先,因为每个节点度为0或2, 所以如果n是偶数直接输出0就行了吧(嘿嘿) 如 ...
- 【dp】奶牛家谱 Cow Pedigrees
令人窒息的奶牛题 题目描述 农民约翰准备购买一群新奶牛. 在这个新的奶牛群中, 每一个母亲奶牛都生两个小奶牛.这些奶牛间的关系可以用二叉树来表示.这些二叉树总共有N个节点(3 <= N < ...
- USACO Section 2.3 奶牛家谱 Cow Pedigrees
OJ:http://www.luogu.org/problem/show?pid=1472 #include<iostream> using namespace std; const in ...
- [luoguP1472] 奶牛家谱 Cow Pedigrees(DP)
传送门 一个深度为i的树可以由一个根节点外加两个深度为i-1的树组成,这就决定了DP该怎么写. 然而我真的没有想到. f[i][j]表示深度为i节点数为j的个数 sum[i][j]表示深度小于等于i节 ...
- 洛谷2344 奶牛抗议(DP+BIT+离散化)
洛谷2344 奶牛抗议 本题地址:http://www.luogu.org/problem/show?pid=2344 题目背景 Generic Cow Protests, 2011 Feb 题目描述 ...
- 洛谷P2402 奶牛隐藏
洛谷P2402 奶牛隐藏 题目背景 这本是一个非常简单的问题,然而奶牛们由于下雨已经非常混乱,无法完成这一计算,于是这个任务就交给了你.(奶牛混乱的原因看题目描述) 题目描述 在一个农场里有n块田地. ...
- HAOI2006 (洛谷P2341)受欢迎的牛 题解
HAOI2006 (洛谷P2341)受欢迎的牛 题解 题目描述 友情链接原题 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之 ...
随机推荐
- HGOI20190707 题解
Problem A 钢铁侠的诞生 现在有$n$个数字$a_i \leq 10^9 $,然后取出$m$个数字,保证合法. 从小到大输出剩余的$n-m$个数字. 对于100%的数据$m\leq n \le ...
- R_Studio(学生成绩)对数值型数据进行统计量分析
对“Gary.csv”中的成绩数据进行统计量分析 基础数据分析 均值 中位数 极差 标准差 变异系数 1/4分位数 3/4分位数 四分位间距... ...分析 setwd('D:\\data' ...
- Unity3D_(地形)创建基本场景
第一人称漫游场景 地形漫游系统: (自己绘制的GIF文件超过20MB放不上博客园.截取了几张图片)按键盘上的“上下左右”可以控制第一人称的漫游视角 资源包和项目源文件:传送门 自己做的项目可执行文件: ...
- sqli-labs(41) and 两php函数的讲解
0X01 构造闭合 发现 不需要闭合 直接构造 id=- union ,database(), 成功 注入 0X02 堆叠注入同道理 一样的 这里我们来了解一下这个函数 mysqli_multi_qu ...
- [DTOJ3996]:Lesson5!(DP+拓扑+线段树)
题目描述 “最短的捷径就是绕远路,绕远路就是我最短的捷径” 转眼就$Stage\ X$了,$Stage\ X$的比赛路线可以看做一个$n$个点$m$条边的有向无环图,每条边长度都是$1$.杰洛$\cd ...
- python语言中多继承中super调用所有父类的方法以及要用到的MRO顺序
在python多继承中,利用super().父类方法,可以调用所有父类,从而在重写的状态下,再次对所有父类的调用! 例: print("******多继承使用super().__init__ ...
- 【学习】linux环境下nginx文件彻底删除
nginx卸载其实很简单,只需要两步即可完成!第一步:输入以下指令全局查找nginx相关的文件: sudo find / -name nginx* 第二步:删除查找出来的所有nginx相关文件 sud ...
- 代码代码:输入两个正整数m和n,求其最大公约数和最小公倍数。15 20 5
import java.util.Scanner; //输入两个正整数m和n,求其最大公约数和最小公倍数.15 20 5 public class Test { public static void ...
- Ruby小白入门笔记之 <Gemfile 文件>
因为初学Ruby,四处查资料无果,才来的贴出亲自试过的操作,覆盖整个个人入门笔记博客中,故所有的操作,都以最明了的方式阐述,当你创建完一个新的Rails应用后,你发现JAVA中我们可以编写maven聚 ...
- Ubuntu16.04小白入门分享之 玩转Ruby你需要安装什么软件(持续更新)
Ubuntu提示功能很强大,一般如果你想安装什么软件,可以直接输入名字,然后会有提示,安装格式一般为: sudo apt install 名字 Ubuntu14.04/16.04命令行快速安装Ruby ...