当前位置: 首页 > news >正文

Yue Fei's Battle(组合计数递推)

 

 

//求一个直径为 k 的树有多少种形态,每个点的度不超过 3 

 

 

// 非常完美的分析,学到了,就是要细细推,并且写的时候要细心

还有除法取模需要用逆元

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
using namespace std;
#define MOD 1000000007
#define LL long long
#define MX 100005

LL dp[MX];
LL sum[MX];
LL inv2;
LL inv6;

LL quick(LL a,LL b)
{
    LL ret = 1;
    while (b)
    {
        if (b&1) ret = ret*a%MOD;
        a = a*a%MOD;
        b/=2;
    }
    return ret;
}

void Init()
{
    inv2 = quick(2,MOD-2);
    inv6 = quick(6,MOD-2);
    dp[0]=1,sum[0]=1;
    dp[1]=1,sum[1]=2;
    for (int i=2;i<MX;i++)
    {
        dp[i] = dp[i-1]*(dp[i-1]-1)%MOD*inv2%MOD;
        dp[i] = (dp[i] + dp[i-1])%MOD;
        dp[i] = (dp[i] + dp[i-1]*sum[i-2]%MOD)%MOD;
        sum[i]=(sum[i-1]+dp[i])%MOD;
    }
}

int main()
{
    int n;
    Init();

    while (scanf("%d",&n)&&n)
    {
        if (n%2==0)
        {
            int i = n/2;
            int ans = (dp[i]+dp[i]*(dp[i]-1)/2)%MOD;
            printf("%d\n",ans);
        }
        else
        {
            int i = n/2;

            int ans = (((dp[i]*(dp[i]+1))%MOD*inv2%MOD)*sum[i-1])%MOD;

            ans = (ans + dp[i])%MOD;
            ans = (ans + (dp[i]*(dp[i]-1)%MOD)%MOD)%MOD;
            ans = (ans + dp[i]*(dp[i]-1)%MOD*(dp[i]-2)%MOD*inv6%MOD )%MOD;
            printf("%d\n",ans);
        }
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/haoabcd2010/p/7220256.html

相关文章:

  • apache地址限制和用户访问
  • Zigbee
  • 我谈通“下水道”(系列连载6)--新的征程
  • SpringBoot入门——应用devtools进行热部署
  • 对Action方法的参数进行双向转化
  • MATLAB中帮助的几种使用方法
  • 伪静态技术说明
  • Java中Model1和Model2
  • config jre for openoffice3.0
  • 2017敏捷沙滩大会概述:学习、心理安全和持续交付的重要性
  • 简洁的一键SSH脚本
  • Page-Enter、Page-Exit的使用
  • 很认真的聊一聊程序员的自我修养(转)
  • ERP系统各种单据流水号的产生方案
  • WebSocket在spring messagemapping下获取httpsession
  • 【React系列】如何构建React应用程序
  • Brief introduction of how to 'Call, Apply and Bind'
  • es6要点
  • JavaScript函数式编程(一)
  • JavaScript新鲜事·第5期
  • JAVA之继承和多态
  • Lsb图片隐写
  • PHP 的 SAPI 是个什么东西
  • Selenium实战教程系列(二)---元素定位
  • Vue.js-Day01
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 浅谈web中前端模板引擎的使用
  • 使用putty远程连接linux
  • 《天龙八部3D》Unity技术方案揭秘
  • const的用法,特别是用在函数前面与后面的区别
  • ​香农与信息论三大定律
  • (1)SpringCloud 整合Python
  • (C语言)二分查找 超详细
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • :如何用SQL脚本保存存储过程返回的结果集
  • @RestControllerAdvice异常统一处理类失效原因
  • @selector(..)警告提示
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • []FET-430SIM508 研究日志 11.3.31
  • [20171101]rman to destination.txt
  • [2023年]-hadoop面试真题(一)
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [BZOJ3211]:花神游历各国(小清新线段树)
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)
  • [Contest20180313]灵大会议
  • [HTML]Web前端开发技术18(HTML5、CSS3、JavaScript )HTML5 基础与CSS3 应用——喵喵画网页
  • [JavaWeb]——获取请求参数的方式(全面!!!)
  • [JS]Math.random()随机数的二三事
  • [ListView.View=List]的垂直滚动条
  • [mvc] 简单的forms认证
  • [Real world Haskell] 中文翻译:第二章 类型与函数