题目链接

emm……

正解:矩阵树定理,但是本宝宝不会求基尔霍夫矩阵。

开始考场方法:

手动模拟$n=1--5$时的答案(数不大,~~画画就出来了~~要画上半个小时)。

画出来,答案是这样的:$1$ $5$ $16$ $45$ $121$

然后简单根据题目出处和难度蒙了一下感觉第$n$项的答案和$n-1$,$n-2$的答案有关。

再看看增长率$(\frac{ans[n-1]}{ans[n-2]})$大概是$2--3$之间,并且比较靠近三。

于是,就想 $ans[n]$ $=$ $ans[n-1]*3$ $±$ $……$

又因为差的不是一个常数,所以
$ans[n]$ $=$ $3*ans[n-1]-ans[n-2]$ $±$ $……$

之后,惊喜的发现每个$ans[n]$ 与 $3*ans[n-1]-ans[n-2]$ 都差$2$。

最终,蒙了一个表达式:$ans[n]=$ $3*ans[n-1]-ans[n-2]+2$

看数据范围,需要高精。

之后一脸懵逼的$AC$了。

代码附上:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
//F(n)=3*F(n-1)-F(n-2)+2,F(1)=1,F(2)=5.;
int ans[][];
int len[];
int mul[];
void pluse(int x)
{
int m=x-;
int n=x-;
int cnt=;int l=len[n];
for(int i=;i<=l;i++)
{
mul[i]=(ans[n][i]*+cnt)%;
cnt=(ans[n][i]*+cnt)/;
}
if(cnt!=) mul[++l]=cnt; cnt=;
for(int i=;i<=l;i++)
{
ans[x][i]=(mul[i]-ans[m][i]+cnt+)%;
if(mul[i]-ans[m][i]+cnt<) cnt=-;
else cnt=(mul[i]-ans[m][i]+cnt)/;
}
if(cnt!=) ans[x][l+]=cnt,len[x]=l+;
else len[x]=l;
return ;
}
int n;
int main()
{
scanf("%d",&n);
ans[][]=;len[]=;
ans[][]=;len[]=;
for(int i=;i<=n;i++) pluse(i);
for(int i=len[n];i>=;i--) printf("%d",ans[n][i]);
return ;
}

题解 BZOJ 1002 【[FJOI2007]轮状病毒】的更多相关文章

  1. BZOJ 1002 [FJOI2007]轮状病毒

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

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

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

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

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

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

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

  5. bzoj 1002 [FJOI2007]轮状病毒——打表找规律

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1002 看 Zinn 的博客:https://www.cnblogs.com/Zinn/p/9 ...

  6. 【刷题】BZOJ 1002 [FJOI2007]轮状病毒

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

  7. BZOJ 1002 FJOI2007 轮状病毒 递推+高精度

    题目大意:轮状病毒基定义如图.求有多少n轮状病毒 这个递推实在是不会--所以我选择了打表找规律 首先执行下面程序 #include<cstdio> #include<cstring& ...

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

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

  9. 1002: [FJOI2007]轮状病毒

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

随机推荐

  1. 【js与jquery】javascript中url编码与解码

    本文主要针对URI编解码的相关问题做了介绍,对Url编码中哪些字符需要编码.为什么需要编码做了详细的说明,并对比分析了Javascript 中和 编解码相关的几对函数 编码/解码 escape / u ...

  2. RTMP_EnableWrite(rtmp)

    发布流关键函数: RTMP_EnableWrite(rtmp); 将rtmp设置可写状态,会发出publish指令,否则是play指令:

  3. 通过键盘上下键 JS事件,控制候选词的选择项

    效果图 JS代码 //上下键 选择事件 searchBackgroud 为样式,只做标记,无实质样式,因为和其他样式不兼容,只能添加CSS $(document).keydown(function ( ...

  4. 【287】◀▶ arcpy 常用类说明

    ArcPy 类列表(按字母顺序) 01   Raster 创建一个可在 Python 脚本或地图代数表达式中使用的栅格对象. 02   Cursor Cursor 是一种数据访问对象,可用于在表中迭代 ...

  5. Texture Filter

    [Texture Filter] 我们的纹理是要贴到三维图形表面的,而三维图形上的pixel中心和纹理上的texel中心并不一至(pixel不一定对应texture上的采样中心texel),大小也不一 ...

  6. libevent源码深度剖析一

    libevent源码深度剖析一 ——序幕 张亮 1 前言 Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少.写这一系列文章的用意在于,一则分享心得:二则对libe ...

  7. YII 模型关联之 一对一

    需求,一个用户对应一个用户信息表,  这两者之间的关系就是一对一 //首先查找出一个用户出来 $user=Users::find()->'])->one(); //然后查询, 第一个参数是 ...

  8. array_splice()函数 ,删除数组中的某个值

    array_splice() 这个函数是真的皮,有好多种方法,但是最后还是在PHP官方的文档找到了合理的解释的用法 花了大概半个小时 $arr = array('a','b','c','d'); ar ...

  9. mysql 基本操作 alter

    查看数据库 show  databases; 新建数据库 命令 create database 库名字. 选择数据库 use  2016test; 创建表:create table 表名(字段1,2, ...

  10. 345. Reverse Vowels of a String翻转字符串中的元音字母

    [抄题]: Write a function that takes a string as input and reverse only the vowels of a string. Example ...