题目描述

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

n轮状病毒的产生规律是在n轮状基中删除若干边,使各原子之间有唯一一条信息通道。例如,共有16个不同的3轮状病毒,入图2所示。

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

输入输出格式

输入格式:

第一行有1个正整数n。

输出格式:

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

输入输出样例

输入样例#1:
复制

3
输出样例#1: 复制

16
其实可以用矩阵树定理来算方案数
但是没有取模,高精是必需的
实际每个矩阵都是相似的
1 5 16 45 121 320
归纳找到规律:
f[i]=3*f[i-1]-f[i-2]+2
证明
还有DP和高精度矩阵树(太毒了找不到)的做法
 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
struct Num
{
int len;
int a[];
}f[];
int n;
Num chen(Num a,int k)
{
int i;
Num ans;
for (i=;i<=a.len;i++)
ans.a[i]=a.a[i]*k;
for (i=;i<=a.len;i++)
ans.a[i+]+=ans.a[i]/,ans.a[i]%=;
ans.len=a.len;
while (ans.a[ans.len+])
{
ans.len++;
ans.a[ans.len+]+=ans.a[ans.len]/;
ans.a[ans.len]%=;
}
return ans;
}
Num add(Num a,int k)
{
int i;
Num ans;
for (i=;i<=a.len;i++)
ans.a[i]=a.a[i];
ans.len=a.len;
ans.a[]+=k;
for (i=;i<=a.len;i++)
ans.a[i+]+=ans.a[i]/,ans.a[i]%=;
while (ans.a[ans.len+])
{
ans.len++;
ans.a[ans.len+]+=ans.a[ans.len]/;
ans.a[ans.len]%=;
}
return ans;
}
Num jian(Num a,Num b)
{
int i;
Num ans;
ans.len=a.len;
for (i=;i<=b.len;i++)
ans.a[i]=a.a[i]-b.a[i];
for (i=b.len+;i<=a.len;i++)
ans.a[i]=a.a[i];
for (i=;i<=a.len;i++)
{
if (ans.a[i]<) ans.a[i]+=,ans.a[i+]-=;
}
while (ans.a[ans.len]&&ans.len>) ans.len--;
return ans;
}
int main()
{int i,j;
cin>>n;
f[].a[]=;f[].len=;
f[].a[]=;f[].len=;
for (i=;i<=n;i++)
{
f[i]=chen(f[i-],);
f[i]=jian(f[i],f[i-]);
f[i]=add(f[i],);
}
for (i=f[n].len;i>=;i--)
printf("%d",f[n].a[i]);
}

[FJOI2007]轮状病毒的更多相关文章

  1. 【bzoj1002】[FJOI2007]轮状病毒

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 4381  Solved: 2393[Submit][Statu ...

  2. 【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度

    1002: [FJOI2007]轮状病毒 Description 给定n(N<=100),编程计算有多少个不同的n轮状病毒. Input 第一行有1个正整数n. Output 将编程计算出的不同 ...

  3. bzoj 1002 [FJOI2007]轮状病毒 高精度&&找规律&&基尔霍夫矩阵

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2234  Solved: 1227[Submit][Statu ...

  4. 生成树的计数(基尔霍夫矩阵):BZOJ 1002 [FJOI2007]轮状病毒

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3928  Solved: 2154[Submit][Statu ...

  5. BZOJ 1002 [FJOI2007]轮状病毒

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3106  Solved: 1724[Submit][Statu ...

  6. 1002: [FJOI2007]轮状病毒

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2609  Solved: 1450[Submit][Statu ...

  7. BZOJ 1002: [FJOI2007]轮状病毒【生成树的计数与基尔霍夫矩阵简单讲解+高精度】

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 5577  Solved: 3031[Submit][Statu ...

  8. BZOJ [FJOI2007]轮状病毒 (找规律)

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 6009  Solved: 3282[Submit][Statu ...

  9. 洛谷 P2144 [FJOI2007]轮状病毒

    P2144 [FJOI2007]轮状病毒 题目描述 轮状病毒有很多变种.许多轮状病毒都是由一个轮状基产生.一个\(n\)轮状基由圆环上\(n\)个不同的基原子和圆心的一个核原子构成.\(2\)个原子之 ...

  10. 【洛谷】2144:[FJOI2007]轮状病毒【高精度】【数学推导??(找规律)】

    P2144 [FJOI2007]轮状病毒 题目描述 轮状病毒有很多变种.许多轮状病毒都是由一个轮状基产生.一个n轮状基由圆环上n个不同的基原子和圆心的一个核原子构成.2个原子之间的边表示这2个原子之间 ...

随机推荐

  1. Flask 学习 四 数据库

    class Role(db.Model): __tablename__='roles' id = db.Column(db.Integer,primary_key=True) name = db.Co ...

  2. 十、Python练习----基础搭建飞机大战

    只是简单的学习了pygame,实现飞机的摧毁还需要多张图片的切换,和sprite(碰撞精灵),还有多种音效的添加(如背景音乐.摧毁特效).以后再深入学习我只是练习一下python. 一.搭建界面(基于 ...

  3. 02-移动端开发教程-CSS3新特性(中)

    1. 新的背景 背景在CSS3中也得到很大程度的增强,比如背景图片尺寸.背景裁切区域.背景定位参照点.多重背景等. 1.1 background-size设置背景图片的尺寸 cover会自动调整缩放比 ...

  4. 深度学习之 cnn 进行 CIFAR10 分类

    深度学习之 cnn 进行 CIFAR10 分类 import torchvision as tv import torchvision.transforms as transforms from to ...

  5. python-map的用法

    map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 1.当seq只 ...

  6. machine learning 之 logistic regression

    整理自Adrew Ng 的 machine learning课程week3 目录: 二分类问题 模型表示 decision boundary 损失函数 多分类问题 过拟合问题和正则化 什么是过拟合 如 ...

  7. emqtt 试用(五)emq 的用户密码认证

    MQTT 认证设置 EMQ 消息服务器认证由一系列认证插件(Plugin)提供,系统支持按用户名密码.ClientID 或匿名认证. 系统默认开启匿名认证(anonymous),通过加载认证插件可开启 ...

  8. GIT入门笔记(13)- GUI GIT

  9. C#配置文件config的使用

    做程序的时候总会有一些参数,可能会调整,这时候一般情况下我都会写在配置文件里,这样方便一点. 配置文件的读取 <?xml version="1.0" encoding=&qu ...

  10. 集智robot微信公众号开发笔记

    开发流程 公众号基本配置(首先得有公众平台账号) 在开发菜单的基本配置中填写好基本配置项 首先配置服务器地址.Token.和消息加密密钥(地址为开发者为微信验证留的接口.token可以随便填写,只要在 ...