Description

给定n(N<=100),编程计算有多少个不同的n轮状病毒。

Input

第一行有1个正整数n。

Output

将编程计算出的不同的n轮状病毒数输出

Sample Input

3

Sample Output

16

HINT

Source

Solution

  基尔霍夫矩阵,左转生成树的计数及其应用

  推出本题的递推式:f[n] = f[n - 1] * 3 - f[n - 2] + 2

  如果你能看懂,拜托给我讲讲,本人不懂。

  注意要使用高精度

 #include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
struct bigint
{
int a[]; bigint()
{
memset(a, , sizeof(a));
} bigint operator + (int rhs)
{
bigint ans;
for(int i = ; i <= a[]; i++)
ans.a[i] = a[i];
ans.a[]++, ans.a[] += rhs;
for(int i = ; i < ans.a[]; i++)
{
ans.a[i + ] += ans.a[i] / ;
ans.a[i] %= ;
}
while(!ans.a[ans.a[]])
ans.a[]--;
return ans;
} bigint operator - (bigint rhs)
{
bigint ans;
ans.a[] = a[];
for(int i = ; i <= ans.a[]; i++)
ans.a[i] = a[i] - rhs.a[i];
for(int i = ; i < ans.a[]; i++)
if(ans.a[i] < )
{
ans.a[i] += ;
ans.a[i + ] -= ;
}
while(!ans.a[ans.a[]])
ans.a[]--;
return ans;
} bigint operator * (int rhs)
{
bigint ans;
ans.a[] = a[] + ;
for(int i = ; i <= ans.a[]; i++)
ans.a[i] = a[i] * rhs;
for(int i = ; i < ans.a[]; i++)
{
ans.a[i + ] += ans.a[i] / ;
ans.a[i] %= ;
}
while(!ans.a[ans.a[]])
ans.a[]--;
return ans;
} }f[]; int main()
{
int n;
cin >> n;
f[].a[] = , f[].a[] = ;
f[].a[] = f[].a[] = ;
for(int i = ; i <= n; i++)
f[i] = f[i - ] * - f[i - ] + ;
for(int i = f[n].a[]; i; i--)
cout << f[n].a[i];
cout << endl;
return ;
}

[BZOJ1002] [FJOI2007] 轮状病毒 (数学)的更多相关文章

  1. BZOJ1002 FJOI2007 轮状病毒 【基尔霍夫矩阵+高精度】

    BZOJ1002 FJOI2007 轮状病毒 Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原 ...

  2. [bzoj1002][FJOI2007]轮状病毒_递推_高精度

    轮状病毒 bzoj-1002 FJOI-2007 Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2 ...

  3. bzoj1002: [FJOI2007]轮状病毒(基尔霍夫矩阵)

    1002: [FJOI2007]轮状病毒 题目:传送门 题解: 决定开始板刷的第一题... 看到这题的时候想:这不就是求有多少种最小生成树的方式吗? 不会啊!!!%题解... 什么鬼?基尔霍夫矩阵?? ...

  4. BZOJ1002[FJOI2007]轮状病毒

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下 ...

  5. [bzoj1002][FJOI2007 轮状病毒] (生成树计数+递推+高精度)

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...

  6. [luogu2144][bzoj1002][FJOI2007]轮状病毒【高精度+斐波那契数列+基尔霍夫矩阵】

    题目描述 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图所示 N轮状病 ...

  7. bzoj1002: [FJOI2007]轮状病毒 生成树计数

    轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图所示 N轮状病毒的产生规 ...

  8. BZOJ1002:[FJOI2007]轮状病毒(找规律,递推)

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下 ...

  9. [bzoj1002] [FJOI2007]轮状病毒轮状病毒(基尔霍夫矩阵)

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下 ...

随机推荐

  1. Sublime Text3 快捷键汇总及设置快捷键配置环境变量

    Ctrl+D 选词 (反复按快捷键,即可继续向下同时选中下一个相同的文本进行同时编辑)Ctrl+G 跳转到相应的行Ctrl+J 合并行(已选择需要合并的多行时)Ctrl+L 选择整行(按住-继续选择下 ...

  2. iptables snat和dnat

    iptables中的snat和dnat是非常有用的,感觉他们二个比较特别,所以单独拿出来说一下. dnat是用来做目的网络地址转换的,就是重写包的目的IP地址.如果一个包被匹配了,那么和它属于同一个流 ...

  3. Linux 上 C 程序的内存布局

    在仔细研究这个问题之前,我认为 C 程序在内存中只有代码段,堆和栈三部分构成.前几天面试被问到了这个问题,才发现自己的印象是不完全的. 在本文中通过解析析一个 C 程序中变量和函数的地址来分析 C 程 ...

  4. unbuntu 系统登录华南师范大学校园网的方法

    最近刚装了unbuntu 系统,刚开始网络连接遇到了点小问题,原来是校园网不知道怎么认证,于是向好基友请教了下,得出快捷的方法如下: 下载学校网络的认证客户端,记住位置,一般都是默认下载地址是 Dow ...

  5. nginx虚拟域名的配置以及测试验证

    1.保证该机器上安装了nginx 未安装请看:centos/linux下的安装Nginx 2.使用root用户编辑配置文件 vim /usr/local/nginx/conf/nginx.conf 3 ...

  6. Js比较对Object类型进行排序

    <script> var data=[{name:"121",age:"18",year:"2018"},{name:" ...

  7. 深入理解Python的字符编码

    原文:http://lukejin.iteye.com/blog/598303 在处理中文的时候,我们有时候会碰到中文乱码的问题. 究其根本原因是正确的字节序列按照错误的编码方式解码成字符 或者正确的 ...

  8. 机器学习策略——DeepLearning.AI课程总结

    一.什么是ML策略 假设你正在训练一个分类器,你的系统已经达到了90%准确率,但是对于你的应用程序来说还不够好,此时你有很多的想法去继续改善你的系统: 收集更多训练数据 训练集的多样性不够,收集更多的 ...

  9. PAT All Roads Lead to Rome 单源最短路

    思路:单源最短路末班就好了,字符串映射成数字处理. AC代码 //#define LOCAL #include <stdio.h> #include <string.h> #i ...

  10. POJ - 1733 Parity game 种类并查集+离散化

    思路:d(i, j)表示区间(i, j]的1的个数的奇偶性.输入最多共有5000*2个点,需要离散化处理一下.剩下的就是并查集判冲突. AC代码 #include <cstdio> #in ...