bzoj1089严格n元树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1089
这是一种套路:记录“深度为 i ”的话,转移需要讨论许多情况;所以可以记录成“深度<=i”!!!
(这种前缀和的样子得到答案也很方便,就是 f [ d ] - f [ d -1 ]。)
这样的话把根节点拿出来,剩下的就是n个深度为 i - 1 的子树了。
当然,每个深度的情况里要包含“什么节点也没有”的情况,才能正确转移。所以要+1。
1.重载运算符好方便! 2.输出的时候要注意不能吞0!学了一招。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int rad=;
int n,d;
struct data{
int v[],l;
}f[];
data operator*(data a,data b)
{
data c;c.l=a.l+b.l;
for(int i=;i<=c.l;i++)c.v[i]=;
for(int i=;i<=a.l;i++)
for(int j=;j<=b.l;j++)
c.v[i+j-]+=a.v[i]*b.v[j];//+=
for(int i=;i<=c.l;i++)
if(c.v[i]>=rad)
{
if(i==c.l)c.l++,c.v[c.l]=;
c.v[i+]+=c.v[i]/rad;
c.v[i]%=rad;
}
while(!c.v[c.l]&&c.l>)c.l--;//c.l>1
return c;
}
data operator^(data a,int b)
{
data c;
c.v[]=;c.l=;
while(b)
{
if(b&)c=c*a;
a=a*a;b>>=;
}
return c;
}
data operator+(data a,int b)
{
a.v[]+=b;int k=;
while(a.v[k]>=rad)a.v[k+]+=a.v[k]/rad,a.v[k]%=rad,k++;
a.l=max(a.l,k);
return a;
}
data operator-(data a,data b)
{
for(int i=a.l;i;i--)
{
a.v[i]-=b.v[i];
if(a.v[i]<)a.v[i]+=rad,a.v[i+]--;
}
while(!a.v[a.l]&&a.l>)a.l--;
return a;
}
void print(data a)
{
printf("%d",a.v[a.l]);
for(int i=a.l-;i;i--)printf("%03d",a.v[i]);
}
int main()
{
scanf("%d%d",&n,&d);
if(!d){printf("");return ;}
f[]=f[]+;
for(int i=;i<=d;i++)
f[i]=(f[i-]^n)+;
print(f[d]-f[d-]);
return ;
}
bzoj1089严格n元树的更多相关文章
- bzoj1089严格n元树——DP+高精度
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1089 f[d]为深度小于等于d的树的个数: 从根节点出发,有n个子树,乘法原理可以得到 f[ ...
- [bzoj1089]严格n元树
设f[i]表示深度不超过i的方案数,那么有f[0]=1,$f[i]=f[i-1]^{n}+1$,然后用高精度即可(注意深度恰好为d还要用f[d]-f[d-1]才是答案) 1 #include<b ...
- 【BZOJ1089】[SCOI2003]严格n元树(高精度,动态规划)
[BZOJ1089][SCOI2003]严格n元树(高精度,动态规划) 题面 BZOJ 洛谷 题解 设\(f[i]\)表示深度为\(i\)的\(n\)元树个数.然后我们每次加入一个根节点,然后枚举它的 ...
- [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1089 分析: 第一感觉可以用一个通式求出来,但是考虑一下很麻烦,不好搞的.很容易发现最 ...
- BZOJ1089: [SCOI2003]严格n元树
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 762 Solved: 387[Submit][Status ...
- 【bzoj1089】严格n元树
Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该树中最底层的节点深度为d(根的深度为0),那么我们称它为一棵深度为d的严格n元树.例如,深度为2的严格 ...
- BZOJ1089:[SCOI2003]严格n元树(DP,高精度)
Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该树中最底层的节点深度为d (根的深度为0),那么我们称它为一棵深度为d的严格n元树.例如,深度为2的严 ...
- BZOJ1089 [SCOI2003]严格n元树 【dp + 高精】
Description 如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树.如果该树中最底层的节点深度为d (根的深度为0),那么我们称它为一棵深度为d的严格n元树.例如,深度为2的严 ...
- bzoj1089 [SCOI2003]严格n元树(dp+高精)
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1899 Solved: 954[Submit][Statu ...
随机推荐
- hdu 1211 逆元
RSA Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- 【error】: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
错误描述如下: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) ...
- zk的watcher机制的实现
转载:https://www.ibm.com/developerworks/cn/opensource/os-cn-apache-zookeeper-watcher/ http://blog.csdn ...
- vue 可编辑表格组件
<template> <div class="table"> <table border="1px" v-dragform> ...
- 2018.11.15 RF antenna impedance-matching
We have studied the impedance-matching of RF transmission line between the antenna and the RX / TX m ...
- New Concept English three(18)
speed:31w/m 56 words Modern sculpture rarely surprises us any more. The idea that modern art can onl ...
- pdi vcard-2.1
vCard The Electronic Business Card Version 2.1 A versit Consortium Specification September 18, 1996 ...
- GPU编程自学3 —— CUDA程序初探
深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题.这里主要记录自己的GPU自学历程. 目录 <GPU编程自学1 -- 引言> <GPU编程自学2 -- CUD ...
- linux centos 安装opencv
系统:Centos 6.5 最后版本 OpenCV: 2.4.9 1.安装依赖包(很重要) yum install cmake gcc gcc-c++ gtk+-devel gimp-devel gi ...
- Chrome调试javacript禁止缓存
/********************************************************************* * Chrome调试javacript禁止缓存 * 说明: ...