【BZOJ】【1089】【SCOI2003】严格n元树
2015-05-15 20:26
302 查看
高精度/递推
Orz Hzwer……然而我想多了……
理解以后感觉黄学长的递推好精妙啊
顺便学到了一份高精度的板子= =233
引用下题解:
f[i]=f[i-1]^n+1
ans=f[d]-f[d-1]
然后加个高精度。。。
话说这个数据范围是虚的吧。。。
极限数据根本不会做。。
/************************************************************** Problem: 1089 User: Tunix Language: C++ Result: Accepted Time:0 ms Memory:1352 kb ****************************************************************/ //BZOJ 1089 #include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #define rep(i,n) for(int i=0;i<n;++i) #define F(i,j,n) for(int i=j;i<=n;++i) #define D(i,j,n) for(int i=j;i>=n;--i) #define pb push_back using namespace std; typedef long long LL; inline int getint(){ int r=1,v=0; char ch=getchar(); for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-1; for(; isdigit(ch);ch=getchar()) v=v*10-'0'+ch; return r*v; } const int N=100010; /*******************template********************/ struct bint{ int l,v[1010]; bint(){l=0;memset(v,0,sizeof v);} int& operator [] (int x){return v[x];} }f[20]; const int Limit=10000; void print(bint a){ printf("%d",a[a.l]); D(i,a.l-1,1) printf("%04d",a[i]); puts(""); } bint operator * (bint a,bint b){ bint c; F(i,1,a.l+b.l) c[i]=0; F(i,1,a.l) F(j,1,b.l) c[i+j-1]+=a[i]*b[j]; c.l=a.l+b.l; F(i,1,c.l) if (c[i]>=Limit){ if (i==c.l){ c.l++; c[i+1]=c[i]/Limit; }else c[i+1]+=c[i]/Limit; c[i]%=Limit; } while(c.l>1 && !c[c.l]) c.l--; return c; } bint operator + (bint a,int p){ a[1]+=p; int now=1; while(a[now]>=Limit){ a[now+1]+=a[now]/Limit; a[now]%=Limit; now++; a.l=max(a.l,now); } return a; } bint operator - (bint a,bint b){ F(i,1,a.l){ a[i]-=b[i]; if (a[i]<0){ a[i]+=Limit; a[i+1]--; } } while(a.l>1 && !a[a.l]) a.l--; return a; } bint operator ^ (bint a,int b){ bint r; r[r.l=1]=1; for(;b;b>>=1,a=a*a) if (b&1) r=r*a; return r; } int main(){ #ifndef ONLINE_JUDGE freopen("1089.in","r",stdin); freopen("1089.out","w",stdout); #endif int n=getint(),d=getint(); f[0][f[0].l=1]=1; F(i,1,d) f[i]=(f[i-1]^n)+1; print(f[d]-f[d-1]); return 0; }
View Code
1089: [SCOI2003]严格n元树
Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 977 Solved: 500
[Submit][Status][Discuss]
Description
如果一棵树的所有非叶节点都恰好有n个儿子,那么我们称它为严格n元树。如果该树中最底层的节点深度为d(根的深度为0),那么我们称它为一棵深度为d的严格n元树。例如,深度为2的严格2元树有三个,如下图:给出n, d,编程数出深度为d的n元树数目。
Input
仅包含两个整数n, d( 0 < n < = 32, 0 < = d < = 16)Output
仅包含一个数,即深度为d的n元树的数目。Sample Input
【样例输入1】2 2
【样例输入2】
2 3
【样例输入3】
3 5
Sample Output
【样例输出1】3
【样例输出2】
21
【样例输出2】
58871587162270592645034001
HINT
Source
[Submit][Status][Discuss]相关文章推荐
- BZOJ1089 [SCOI2003]严格n元树
- 【BZOJ 1089】 [SCOI2003]严格n元树
- [BZOJ1089][SCOI2003]严格n元树(dp+数学相关+高精度)
- BZOJ 1089: [SCOI2003]严格n元树
- 【BZOJ 1089】[SCOI2003]严格n元树
- 简单高精度模板(bzoj 1089: [SCOI2003]严格n元树)
- [BZOJ 1089][SCOI2003]严格n元树:DP+高精度
- BZOJ1089 [SCOI2003]严格n元树 【dp + 高精】
- BZOJ1089: [SCOI2003]严格n元树
- BZOJ1089 [SCOI2003]严格n元树 【dp + 高精】
- bzoj 1089 [SCOI2003]严格n元树(DP+高精度)
- bzoj1089-[SCOI2003]严格n元树
- bzoj1089 [SCOI2003]严格n元树(dp+高精)
- [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
- bzoj 1089 [SCOI2003]严格n元树(DP+高精度)
- bzoj1089 [SCOI2003]严格n元树
- 【BZOJ】1089: [SCOI2003]严格n元树(递推+高精度/fft)
- bzoj1089: [SCOI2003]严格n元树(高精度)
- BZOJ 1089: [SCOI2003]严格n元树(dp+高精度快速幂)
- [BZOJ1089][SCOI2003]严格n元树(递推+高精度)