题目大意:定义一棵深度为d的严格n元树为根的深度为0,最深的节点深度为d,且每一个非叶节点都有恰好n个子节点的树

给定n和d,求深度为d的严格n元树一共同拥有多少种

此题的递推部分并不难 首先我们设深度为i的严格n元树一共同拥有f[i]种 令S[i]为f[i]的前缀和

我们不难发现一棵深度为i下面的严格n元树由两部分组成:一个根节点,n棵子树。当中每棵子树的深度不超过i-1

每棵子树有S[i-1]种 一共n棵子树 于是S[i]=S[i-1]^n

嗯?是不是少了点东西?没错,另一种情况,这棵严格n元树本身就是一个根节点

于是S[i]=S[i-1]^n+1

然后看看例子。。

。妈蛋。

。。高精度。。。

事实上高精度不难写真的。。。

我的高精度就是一通操作符重载。。

。 连cout都重载了。。。。

顺便学到了非常多东西

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<iomanip>
using namespace std;
struct long_int{
int num[300],cnt;
void operator = (int y)
{
num[1]=y;
cnt=1;
}
int& operator [] (int x)
{
return num[x];
}
}S[20];
void operator *= (long_int &x,long_int &y)
{
long_int z=S[19];
int i,j;
for(i=1;i<=x.cnt;i++)
for(j=1;j<=y.cnt;j++)
{
z[i+j-1]+=x[i]*y[j];
z[i+j]+=z[i+j-1]/10000;
z[i+j-1]%=10000;
}
z.cnt=x.cnt+y.cnt;
if(!z[z.cnt])
--z.cnt;
x=z;
}
void operator ++ (long_int &x)
{
int i=1;x[1]++;
while(x[i]==10000)
x[i]=0,x[++i]++;
}
long_int operator - (long_int &x,long_int &y)
{
long_int z=S[19];
int i;
for(i=1;i<=x.cnt;i++)
{
z[i]+=x[i]-y[i];
if(z[i]<0)
z[i]+=10000,z[i+1]--;
if(z[i])
z.cnt=i;
}
return z;
}
long_int operator ^ (long_int x,int y)
{
long_int z=S[19];z=1;
while(y)
{
if(y&1) z*=x;
x*=x;
y>>=1;
}
return z;
}
ostream& operator << (ostream& os,long_int x)
{
int i;
os<<x[x.cnt];
for(i=x.cnt-1;i;i--)
os<<setfill('0')<<setw(4)<<x[i];
return os;
}
int n,d;
int main()
{
int i;
cin>>n>>d;
if(!d)
{
puts("1");
return 0;
}
S[0]=1;
for(i=1;i<=d;i++)
S[i]=S[i-1]^n,++S[i];
cout<<S[d]-S[d-1]<<endl;
}

BZOJ 1089 SCOI2003 严格n元树 动态规划+高精度的更多相关文章

  1. BZOJ 1089: [SCOI2003]严格n元树

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

  2. bzoj 1089 [SCOI2003]严格n元树(DP+高精度)

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

  3. bzoj 1089 SCOI2003严格n元树 递推

    挺好想的,就是一直没调过,我也不知道哪儿的错,对拍也拍了,因为数据范围小,都快手动对拍了也不知道 哪儿错了.... 我们定义w[i]代表深度<=i的严格n元树的个数 那么最后w[d]-w[d-1 ...

  4. bzoj 1089: [SCOI2003]严格n元树【dp+高精】

    设f[i]为深度为i的n元树数目,s为f的前缀和 s[i]=s[i-1]^n+1,就是增加一个根,然后在下面挂n个子树,每个子树都有s[i-1]种 写个高精就行了,好久没写WA了好几次-- #incl ...

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

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

  6. 【BZOJ】1089: [SCOI2003]严格n元树(递推+高精度/fft)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1089 题意:求深度为d的n元树数目.(0<n<=32, 0<=d<=16) ...

  7. 【noi 2.6_9280】&【bzoj 1089】严格n元树(DP+高精度+重载运算符)

    题意:定义一棵树的所有非叶节点都恰好有n个儿子为严格n元树.问深度为d的严格n元树数目. 解法:f[i]表示深度为<=i的严格n元树数目.f[i]-f[i-1]表示深度为i的严格n元树数目.f[ ...

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

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

  9. 1089: [SCOI2003]严格n元树

    好久没更新了..于是节操掉尽python水过本来就水的题.. n,d=map(int, raw_input().split()) if d==0: print 1 else: f=[1] for i ...

随机推荐

  1. 每日英语:Genetic Manipulation Extends Life of Mice 20%

    By reducing the activity of one type of gene, scientists said they increased the average life span o ...

  2. 配置Tomcat的server.xml以适应web-content文件系统的位置改变

    刚才把写的一对jsp.html文件夹改变了位置,然后测试的时候出现了404 后来思考,应该去重新配置tomcat的server.xml文件,修改虚拟路径对应的文件系统路径,修改为当前对应的文件系统路径 ...

  3. 解决Ubuntu16的风扇高速旋转问题(双显卡)

    问题描述 自从我的双显卡的笔记本装上Ubuntu 14 后,风扇狂转.发热巨大.网上一搜索估计是显卡驱动不太行.最近英伟达的Nvidia Prime可以完美地切换双显卡,安装这个软件后,风扇就不会狂转 ...

  4. Android开发日记(六)

    textViewUserName.setCursorVisible(false);//隐藏光标 textViewUserName.setFocusable(false);//失去焦点 textView ...

  5. centos修改ip mac等

    CentOS修改mac http://www.haowlan.com/jishuluntan/488.html CentOS 修改IP地址, DNS, 网关 http://www.21andy.com ...

  6. golang socket 实现分析(一)

    socket:tcp/udp.ip构成了网络通信的基石,tcp/ip是面向连接的通信协议 要求建立连接时进行3次握手确保连接已被建立,关闭连接时需要4次通信来保证客户端和,服务端都已经关闭 在通信过程 ...

  7. 【Unity笔记】UGUI的自动布局功能

    一些RectTransform的物体(UGUI元素)已经实现了ILayoutElement接口,如Image. 如果一个RectTransform的物体(UGUI元素)的其中一个组件实现了ILayou ...

  8. [uart]3.tty驱动分析

    转自:http://www.wowotech.net/linux_kenrel/183.html 目录: 1 首先分析设备驱动的注册 1.1 uart_register_driver分析 1.2 tt ...

  9. Spring Boot 更换 Banner

    Spring 启动时,会有一个Banner图案,这个图案是可以更换的 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ ...

  10. 配置TOMCAT 修改默认ROOT路径

    本文转载http://xxs673076773.iteye.com/blog/1134805 最合适的) 最直接的办法是,删掉tomcat下原有Root文件夹,将自己的项目更名为Root. 我在$to ...