`
Simone_chou
  • 浏览: 185989 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

Cow Pedigrees(DP)

 
阅读更多

Cow Pedigrees

Silviu Ganceanu -- 2003

 

Farmer John is considering purchasing a new herd of cows. In this new herd, each mother cow gives birth to two children. The relationships among the cows can easily be represented by one or more binary trees with a total of N (3 <= N < 200) nodes. The trees have these properties:

  • The degree of each node is 0 or 2. The degree is the count of the node's immediate children.
  • The height of the tree is equal to K (1 < K <100). The height is the number of nodes on the longest path from the root to any leaf; a leaf is a node with no children.

How many different possible pedigree structures are there? A pedigree is different if its tree structure differs from that of another pedigree. Output the remainder when the total number of different possible pedigrees is divided by 9901.

PROGRAM NAME: nocows

INPUT FORMAT

  • Line 1: Two space-separated integers, N and K.

SAMPLE INPUT (file nocows.in)

5 3

OUTPUT FORMAT

  • Line 1: One single integer number representing the number of possible pedigrees MODULO 9901.

SAMPLE OUTPUT (file nocows.out)

2

OUTPUT DETAILS

Two possible pedigrees have 5 nodes and height equal to 3:

           @                   @      
          / \                 / \
         @   @      and      @   @
        / \                     / \
       @   @                   @   @

 

   题意:

   给出 N(3 ~ 200)和 K(1 ~ 100),代表有 N 个结点,K 的深度。输出能有多少种满足 N 结点,K 深度的二叉树形态。结果要MODULO 9901。

 

   思路:

   DP。

   dp [ i ][ j ] 代表 i 节点 j - 1 深度的二叉树种数。small [ i ] [ j ] 代表 i 节点下小于等于 j 深度的种数有多少种。一颗二叉树可以由一个节点 + 两颗子树(左右子树)构成,那么 K 深度是由 K - 1深度来的,并且给出的结点一定会是奇数。故可以dp [ i ][ j ] 可以分成 3 种情况讨论:

   设左子树节点数为 p ,那么右子树节点数则为 N - p - 1;

   1.dp[ i ][ j ] += dp[ p ][ j - 1] + small[ N - p - 1 ][ j - 2];    由左子树深度为 j - 1,右子树深度小于 j - 1(即小于等于j - 2的)来构成;

   2.dp[ i ][ j ] += small[ p ][ j - 2] + dp[ N - p - 1 ][ j - 1];    由左子树深度小于 j - 1(即小于等于j - 2的),右子树深度为 j - 1 来构成;

   3.dp[ i ][ j ] += dp[ p ][ j - 1] + dp[ N - p - 1 ][ j - 1];        由左右子树深度都为 j - 1 深度来构成。

   

   AC:

/*
TASK:nocows
LANG:C++
ID:sum-g1
*/
#include<stdio.h>
#include<string.h>
int dp[205][105];
int small[205][105];

int main()
{
    freopen("nocows.in","r",stdin);
    freopen("nocows.out","w",stdout);
    int n,k;
    scanf("%d%d",&n,&k);
    memset(dp,0,sizeof(dp));
    dp[1][1] = 1;
    for(int i = 1;i <= k;i++)
        small[1][i] = 1;
    for(int i = 3;i <= n;i += 2)
    {
        for(int j = 2;j <= k;j++)
        {
            for(int l = 1;l < i;l += 2)
            {
                dp[i][j] += (dp[l][j - 1] * small[i - l - 1][j - 2] % 9901);
                dp[i][j] += (small[l][j - 2] * dp[i - l - 1][j - 1] % 9901);
                dp[i][j] += (dp[l][j - 1] * dp[i - l - 1][j - 1] % 9901);
            }
            dp[i][j] %= 9901;
            for(int l = j;l <= k;l++)
                small[i][l] += dp[i][j];
        }
    }
    printf("%d\n",dp[n][k]);
    return 0;
}

 

 

分享到:
评论

相关推荐

    Popgen_teaching_code

    Note kinship2 is needed only for drawing the pedigrees in IBD_pedigree and mvtnorm for the 2D fitness landscapes pkgs &lt;- c( " RColorBrewer " , " shiny " , " kinship2 " , " mvtnorm " ) dl_pkgs &lt;...

    historical_genomics:玉米历史基因组学

    这也包括“ Jeff_Inbred_pedigree-Howie2.xlsx”数据文件和“ Ames_pedigrees352014”,并且可能包含一些重复项。 Minn.csv 来自明尼苏达州的家谱数据来自Chris Schaefer博士论文的Rex Bernardo,原始文件是Crop ...

    ggenealogy:用于可视化家谱数据集的CRAN软件包

    ggenealogy:用于可视化家谱数据集的CRAN软件包

    2107381120 王孟丽 实验2 (1).docx

    2107381120 王孟丽 实验2 (1).docx

    Java项目如何打成可以运行Jar包

    Java项目如何打成可以运行Jar包

    node-v12.22.8-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    海信 LED32K360X3D(0000)BOM1 自动重启问题软件升级数据 务必确认机编一致 强制刷机 整机USB升级程序

    MT5505机芯升级方法: 1、下载数据,压缩包解压,升级软件文件夹名字为Hisense_5505,文件夹下包含“机型名.pkg”以及version.txt 2、将文件夹Hisense_5505,整个文件夹拷贝至U盘根目录下 3、电视关机,插入U盘(USB3或者靠近高频头的USB口),重新启动电视机,电视机自动检测到升级软件之后并进行升级 4、在升级过程中屏幕有相关提示,升级完成后能自动开机。(建议是升级完成之后拔下U盘设备以免下次开机进行重复性升级) 注意: 1、(U盘要求使用FAT32格式,建议4G-8G的品牌U盘,刷机成功率会高) 2、升级到结束,大约需要8-30分钟,中途绝对不能断电 3、升级重启第一次进入系统,请等完全正常进入开机桌面之后,才能拨下U盘 4、如无法升级,将Hisense 5505文件夹内“机型名.pkg”的文件重命名为“upgrade.pkg”,此时插上U盘开机,电视就会默认为强制升级模式

    batik-awt-util-1.7.jar

    Batik是为想使用svg格式图片来实现各种功能的应用程序和Applet提供的一个基于java的工具包

    node-v14.10.1-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    520表白html5爱心代码源码合集.zip

    520表白html5爱心代码520表白html5爱心代码源码合集.zip 520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zip520表白html5爱心代码源码合集.zi

    Qt 5开发及实例(第4版)含典型案例视频分析源代码+ppt超详细资料.zip

    Qt 5开发及实例(第4版)含典型案例视频分析源代码+ppt超详细资料.zip 第1部分为Qt基础,在上一版的基础上增加了Qt操作表格处理软件Excel数据和字处理软件Word数据的内容。 第2部分为Qt综合实例,重新设计了电子商城系统、MyWord字处理软件、微信客户端程序。 第3部分为Qt扩展应用OpenCV,首先配置OpenCV-3.4.3,然后介绍典型图片处理。 第4部分为QML和Qt Quick及其应用,介绍了QML及Qt Quick相关内容, 【综合实例】为多功能文档查看器。第5部分为附录,介绍了C++相关知识和Qt 5简单调试。

    JavaScript_MultiOn API.zip

    JavaScript

    eclipse安装教程.rar

    eclipse安装

    DeNoise-tensorflow-master.zip

    DeNoise-tensorflow-master.zip

    C#源码用于查看和显示电脑已连接的WIFI密码

    C#源码用于查看和显示电脑已连接的WIFI密码

    字符串的逆序:输入为字符串,输出为字符串的逆序

    字符串的逆序,输入为字符串,输出为字符串的逆序,供学习参考。

    JavaScript_你可以用来替换momentjs ESLint Plugin的函数列表.zip

    JavaScript

    node-v6.14.4-headers.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v8.6.0-headers.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于java实现的智慧医院门诊管理系统项目源码+设计文档+实验报告+详细资料.zip

    基于java实现的智慧医院门诊管理系统项目源码+设计文档+实验报告+详细资料.zip

Global site tag (gtag.js) - Google Analytics