BZOJ1002
来源:互联网 发布:淘宝商城-情侣装 编辑:程序博客网 时间:2024/06/05 23:01
传送门:BZOJ1002
似乎做法挺多,不过我并不懂得基于连通性的动态规划,于是只能做纯数学解法。
我们需要以下知识:
Kirchhoff Matrix Tree定理:
设G 为无向图,取E 为图G 的度数矩阵,F 为图G 的邻接矩阵
称矩阵E−F 为图G的Kirchhoff矩阵R ,任取与R 同构的行列式R′ 的任意一个n−1 阶主子式Q ,其值为图G的生成树个数。
这个定理不是显然的,但我们在这里不证,因为它与本题的讨论无关。
取中心点为0号点,其余点按顺时针顺序标为1234…n,则有
这里我们显然会取1-n行主子式,故
将此行列式Laplace展开,可得
其中
的带状行列式的值。这个式子的证明详细步骤就不写了。
而将
详细过程就不写了。
于是有
其中
然后高精度就可以AC了。
【吐槽:题解LaTeX代码写的时间比我做题时间还长】
代码上的小细节见下。
#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using namespace std;struct node{ int a[1100],l; node() { memset(a,0,sizeof(a)); l = 1; } friend inline node operator *(int x,node &y) { node ret; ret.l = y.l+1; for (int i = 1;i <= y.l;++i) { ret.a[i] += y.a[i]*x; ret.a[i+1] += ret.a[i]/10; ret.a[i] %= 10; } if (ret.a[ret.l] == 0) ret.l--; return ret; } friend inline node operator -(node x,node y) { node z; z.l = max(x.l,y.l); for (int i = 1;i <= z.l;++i) { z.a[i] = x.a[i]-y.a[i]; while (z.a[i] < 0) z.a[i] += 10,x.a[i+1]--; } while (z.l > 1&&z.a[z.l] == 0)z.l--; return z; } friend inline node operator +(node &x,int y) { node ret = x; ret.a[1] += y; for (int i = 1;i <= ret.l;++i) { if (ret.a[i] >= 10) ret.a[i]-=10,ret.a[i+1]++; else break; } if (ret.a[ret.l+1]) ret.l++; return ret; } inline void print() { for (int i = l;i >= 1;--i) printf("%d",this->a[i]); }};int n;node g[110];node ans;void Readdata(){ freopen("loli.in","r",stdin); scanf("%d",&n);}void Solve(){ g[1]=g[1]+3; g[2]=g[2]+8; if(n<=2){ g[n].print(); return; } for(int i=3;i<=n;i++) g[i]=3*g[i-1]-g[i-2]; ans=3*g[n-1]-2*g[n-2]; ans=ans+(-2); ans.print();}void Close(){ fclose(stdin); fclose(stdout);}int main(){ Readdata(); Solve(); Close();}
0 0
- BZOJ1002
- bzoj1002
- BZOJ1002
- bzoj1002
- bzoj1002
- BZOJ1002轮状病毒
- 【DP】bzoj1002
- [BZOJ1002]轮状病毒
- BZOJ1002轮状病毒
- [Bzoj1002][FJOI2007]轮状病毒
- bzoj1002[FJOI2007]轮状病毒
- 【bzoj1002】【FJOI2007】【轮状病毒】
- [高精度][BZOJ1002][FJOI2007]轮状病毒
- 【FJOI2007】【BZOJ1002】轮状病毒
- bzoj1002【fjoi2007】轮状病毒
- [BZOJ1002] [FJOI2007] 轮状病毒
- BZOJ1002 [FJOI2007]轮状病毒
- BZOJ1002: [FJOI2007]轮状病毒
- 日经社説 20150813 企業は強い成長基盤を築け
- php中static静态类与static 静态变量用法区别
- 内核ko中打印应用层数据
- SpringMVC表单标签(4)
- elciple中如何设置字体大小
- BZOJ1002
- 关于a标签title中有空格,空格后不显示问题
- hdu 5305 Friends (dfs)
- Javascript 私有变量
- chrome cookie管理
- hdoj 2122 Ice_cream’s world III【最小生成树】
- C# 解析简单的Xml文件
- HDU 5349 MZL's simple problem(平衡树 树堆)
- 日经社説 20150813 人民元の切り下げに映る中国経済の苦境