题意:定义一棵树的所有非叶节点都恰好有n个儿子为严格n元树。问深度为d的严格n元树数目。

解法:f[i]表示深度为<=i的严格n元树数目。f[i]-f[i-1]表示深度为i的严格n元树数目。f[i]=f[i-1]^n+1。d层的严格n元树可分解为1个根节点和n棵d-1层的严格n元树。利用乘法原理,再加上子树为空的一种情况。

P.S.同样要注意递推的思想!

 1 #include<cstdio>
2 #include<cstdlib>
3 #include<cstring>
4 #include<iostream>
5 using namespace std;
6
7 struct node
8 {
9 int l;
10 int s[210];
11 node() {l=0;memset(s,0,sizeof(s));}
12 }f[20];
13
14 int mmax(int x,int y) {return x>y?x:y;}
15 node operator+(node x,int y)
16 {
17 int t=1;
18 x.s[t]+=y;
19 while (x.s[t]>9) x.s[t+1]+=x.s[t]/10,x.s[t]%=10,t++;
20 return x;
21 }
22 node operator-(node x,node y)
23 {
24 node z;
25 z.l=mmax(x.l,y.l);
26 for (int i=1;i<=z.l;i++)
27 {
28 if (x.s[i]<y.s[i]) x.s[i]+=10,x.s[i+1]--;
29 z.s[i]+=x.s[i]-y.s[i];
30 if (z.s[i]>9) z.s[i+1]+=z.s[i]/10,z.s[i]%=10;
31 }
32 while (!z.s[z.l]) z.l--;
33 return z;
34 }
35 node operator*(node x,node y)
36 {
37 node z;
38 z.l=x.l+y.l-1;
39 for (int i=1;i<=x.l;i++)
40 for (int j=1;j<=y.l;j++)//不同于+!
41 {
42 z.s[i+j-1]+=x.s[i]*y.s[j];
43 if (z.s[i+j-1]>9) z.s[i+j]+=z.s[i+j-1]/10,z.s[i+j-1]%=10;
44 }
45 while (z.s[z.l+1]) z.l++;
46 return z;
47 }
48 node operator^(node x,int y)
49 {
50 node z=x,u=x;
51 y--;
52 while (y>0)
53 {
54 if (y%2) z=z*u;
55 u=u*u;//同底数幂相乘为指数的加法
56 y/=2;
57 }
58 return z;
59 }
60 void print(node x)
61 {
62 for (int i=x.l;i>=1;i--)//converse!!
63 printf("%d",x.s[i]);
64 printf("\n");
65 }
66 int main()
67 {
68 int n,d;
69 scanf("%d%d",&n,&d);
70 f[0].l=1,f[0].s[1]=1;
71 f[1].l=1,f[1].s[1]=2;
72 for (int i=2;i<=d;i++)
73 f[i]=(f[i-1]^n)+1;
74 print(f[d]-f[d-1]);//
75 return 0;
76 }

【noi 2.6_9280】&【bzoj 1089】严格n元树(DP+高精度+重载运算符)的更多相关文章

  1. 【noi 2.6_9290】&【poj 2680】Computer Transformation(DP+高精度+重载运算符)

    题意:给一个初始值1,每步操作将1替换为01,将0替换为10.问N步操作后有多少对连续的0. 解法:f[i]表示第i步后的答案.可以直接打表发现规律--奇数步后,f[i]=f[i-1]*2-1;偶数步 ...

  2. [BZOJ]1089 严格n元树(SCOI2003)

    十几年前的题啊……果然还处于高精度遍地走的年代.不过通过这道题,小C想mark一下n叉树计数的做法. Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该 ...

  3. BZOJ1089:[SCOI2003]严格n元树(DP,高精度)

    Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该树中最底层的节点深度为d (根的深度为0),那么我们称它为一棵深度为d的严格n元树.例如,深度为2的严 ...

  4. bzoj1089严格n元树——DP+高精度

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1089 f[d]为深度小于等于d的树的个数: 从根节点出发,有n个子树,乘法原理可以得到 f[ ...

  5. BZOJ 1089 严格n元树 (递推+高精度)

    题解:用a[i]表<=i时有几种树满足度数要求,那么这样就可以递归了,a[i]=a[i-1]^n+1.n个节点每个有a[i-1]种情况,那么将其相乘,最后加上1,因为深度为0也算一种.那么答案就 ...

  6. 【BZOJ1089】[SCOI2003]严格n元树(高精度,动态规划)

    [BZOJ1089][SCOI2003]严格n元树(高精度,动态规划) 题面 BZOJ 洛谷 题解 设\(f[i]\)表示深度为\(i\)的\(n\)元树个数.然后我们每次加入一个根节点,然后枚举它的 ...

  7. BZOJ 1089 SCOI2003 严格n元树 动态规划+高精度

    题目大意:定义一棵深度为d的严格n元树为根的深度为0,最深的节点深度为d,且每一个非叶节点都有恰好n个子节点的树 给定n和d,求深度为d的严格n元树一共同拥有多少种 此题的递推部分并不难 首先我们设深 ...

  8. bzoj1089 [SCOI2003]严格n元树(dp+高精)

    1089: [SCOI2003]严格n元树 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1899  Solved: 954[Submit][Statu ...

  9. BZOJ 3572 [HNOI2014]世界树 (虚树+DP)

    题面:BZOJ传送门 洛谷传送门 题目大意:略 细节贼多的虚树$DP$ 先考虑只有一次询问的情况 一个节点$x$可能被它子树内的一个到x距离最小的特殊点管辖,还可能被管辖fa[x]的特殊点管辖 跑两次 ...

随机推荐

  1. LeetCode167 两数之和 II - 输入有序数组

    给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的下标值 ...

  2. Flutter 基础组件:单选框和复选框

    前言 Material组件库中提供了Material风格的单选开关Switch和复选框Checkbox,虽然它们都是继承自StatefulWidget,但它们本身不会保存当前选中状态,选中状态都是由父 ...

  3. 剑指offer 面试题9.1:用两个队列实现栈

    题目描述 使用队列实现栈的下列操作:push(x) -- 元素 x 入栈:pop() -- 移除栈顶元素:top() -- 获取栈顶元素:empty() -- 返回栈是否为空: 编程思想 利用双队列实 ...

  4. Maven学习笔记之第一个Maven项目(Linux)

    Maven是Apache旗下的管理Java项目jar包的项目管理工具,有了它可以很方便构建和管理我们的Java项目,你不必在互联网上逐个查找你需要的第三方jar包,你只需在maven reposito ...

  5. Docker学习笔记之基本命令使用

    测试的环境为Ubuntu1804. 1. search命令搜索镜像 sudo docker search centos 搜索centos相关的镜像,可以看到第一个最多星的的centos是官方的镜像,而 ...

  6. MongoDB导出导入功能

    导出脚本: mongo_export.sh !#/bin/bash mongoexport -h x.x.x.x  --port 27017 -d database -c collection  -q ...

  7. mysql的逻辑备份和恢复

    备份指定的数据库或此数据库中的某些表 mysqldump [options] db_name [tables] >backup.sql 备份指定的一个或多个数据库 mysqldump --dat ...

  8. 你不知道的Linux目录

    Linux二级目录及其对应的作用 主要文件

  9. Genymotion虚拟机用键盘输入中文

    genymotion我用的版本是3.0.4,安卓内核版本从4到9都进行了尝试,尤其是教新的版本原生是不带中文输入法的. 前提:安装Genymotion以后,想要随意安装app,需要先安装Genymot ...

  10. ASP.NET Core错误处理中间件[3]: 异常处理器

    DeveloperExceptionPageMiddleware中间件错误页面可以呈现抛出的异常和当前请求上下文的详细信息,以辅助开发人员更好地进行纠错诊断工作.ExceptionHandlerMid ...