P2144 [FJOI2007]轮状病毒
题目描述
轮状病毒有很多变种。许多轮状病毒都是由一个轮状基产生。一个n轮状基由圆环上n个不同的基原子和圆心的一个核原子构成。2个原子之间的边表示这2个原子之间的信息通道,如图1。
n轮状病毒的产生规律是在n轮状基中删除若干边,使各原子之间有唯一一条信息通道。例如,共有16个不同的3轮状病毒,入图2所示。
给定n(N<=100),编程计算有多少个不同的n轮状病毒。

输入输出格式
输入格式:
第一行有1个正整数n。
输出格式:
将编程计算出的不同的n轮状病毒数输出
输入输出样例
3
16
Solution:
本题打表找规律,高精码农题。
随便什么姿势(手推或者爆搜),反正先打个表:$1,5,16,45,121,320,841,2205$。
可以用各种角度找规律:
1、稍微复杂点的规律:观察奇数项:$1^2,4^2,11^2,29^2$,指数均为$2$,而底数$a_i=3*a_{i-1}-a_{i-2},i>2$。再观察偶数项:$5*1^2,5*3^2,5*8^2,5*21^2$,系数均为$5$,指数均为$2$,而底数$a_i=3*a_{i-1}-a_{i-2},i>2$。所以我们可以奇偶分开求。
2、简单点的规律:直接整体看,发现$a_i=3*a_{i-1}-a_{i-2}+2,i>2$。
随便递推一波发现会爆long long,于是上线高精码农(~>_<~)。
代码:
/*Code by 520 -- 9.18*/
#include<bits/stdc++.h>
#define il inline
#define ll long long
#define RE register
#define For(i,a,b) for(RE int (i)=(a);(i)<=(b);(i)++)
#define Bor(i,a,b) for(RE int (i)=(b);(i)>=(a);(i)--)
using namespace std;
const int Base=1e5;
int n,m;
struct node{
ll f[],len;
il void Clr(){memset(f,,sizeof(f)),len=;}
il void Push(ll x){f[len=]=x;}
node operator + (const node &x) const {
node tp;tp.Clr();tp.len=max(len,x.len)+;
For(i,,tp.len)
tp.f[i]+=f[i]+x.f[i],
tp.f[i+]+=tp.f[i]/Base,
tp.f[i]%=Base;
For(i,,tp.len) tp.f[i+]+=tp.f[i]/Base,tp.f[i]%=Base;
while(tp.len&&!tp.f[tp.len]) tp.len--;
return tp;
}
node operator - (const node &x) const {
node tp;tp.Clr();tp.len=len+;
For(i,,tp.len) {
tp.f[i]+=f[i]-x.f[i];
if(tp.f[i]<) tp.f[i+]--,tp.f[i]+=Base;
}
For(i,,tp.len) tp.f[i+]+=tp.f[i]/Base,tp.f[i]%=Base;
while(tp.len&&!tp.f[tp.len]) tp.len--;
return tp;
}
node operator * (const node &x) const {
node tp;tp.Clr();tp.len=len+x.len+;
For(i,,len) For(j,,x.len)
tp.f[i+j-]+=f[i]*x.f[j],
tp.f[i+j]+=tp.f[i+j-]/Base,
tp.f[i+j-]%=Base;
For(i,,tp.len) tp.f[i+]+=tp.f[i]/Base,tp.f[i]%=Base;
while(tp.len&&!tp.f[tp.len]) tp.len--;
return tp;
}
il void Output(){
printf("%lld",f[len]);
Bor(i,,len-) printf("%05lld",f[i]);
}
}a[],tp[]; int main(){
cin>>n,tp[].Push(),tp[].Push();
a[].Push(),a[].Push();
For(i,,n) a[i]=a[i-]*tp[]-a[i-]+tp[];
a[n].Output();
return ;
}
P2144 [FJOI2007]轮状病毒的更多相关文章
- 洛谷 P2144 [FJOI2007]轮状病毒
		
P2144 [FJOI2007]轮状病毒 题目描述 轮状病毒有很多变种.许多轮状病毒都是由一个轮状基产生.一个\(n\)轮状基由圆环上\(n\)个不同的基原子和圆心的一个核原子构成.\(2\)个原子之 ...
 - 洛谷P2144 [FJOI2007]轮状病毒
		
可以用Matrix-Tree定理,然而被卡精度 #include<cstdio> #include<cstdlib> #include<algorithm> #in ...
 - luogu P2144 [FJOI2007]轮状病毒
		
传送门 随便摸一发题解算了 打表找规律 前五个答案是 1 5 16 45 121 其实是 1^2 3^2-4 4^2 7^2-4 11^2 底数就是类似于斐波那契数列,还有偶数项要减4 #includ ...
 - 【洛谷】2144:[FJOI2007]轮状病毒【高精度】【数学推导??(找规律)】
		
P2144 [FJOI2007]轮状病毒 题目描述 轮状病毒有很多变种.许多轮状病毒都是由一个轮状基产生.一个n轮状基由圆环上n个不同的基原子和圆心的一个核原子构成.2个原子之间的边表示这2个原子之间 ...
 - 【bzoj1002】[FJOI2007]轮状病毒
		
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4381 Solved: 2393[Submit][Statu ...
 - 【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度
		
1002: [FJOI2007]轮状病毒 Description 给定n(N<=100),编程计算有多少个不同的n轮状病毒. Input 第一行有1个正整数n. Output 将编程计算出的不同 ...
 - bzoj 1002  [FJOI2007]轮状病毒 高精度&&找规律&&基尔霍夫矩阵
		
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2234 Solved: 1227[Submit][Statu ...
 - 生成树的计数(基尔霍夫矩阵):BZOJ 1002 [FJOI2007]轮状病毒
		
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3928 Solved: 2154[Submit][Statu ...
 - BZOJ 1002 [FJOI2007]轮状病毒
		
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3106 Solved: 1724[Submit][Statu ...
 
随机推荐
- sqlite3 数据库命令操作
			
SQLite 数据库,是一个非常轻量级自包含(lightweight and self-contained)的DBMS,它可移植性好,很容易使用,很小,高效而且可靠. SQLite嵌入到使用它的应用程 ...
 - 微信小程序中的 web-view 组件
			
web-view 是一个可以承载 web 网页的容器,当 WXML 文件中存在 web-view 组件时,其他组件会自动全部失效,而且 web-view 承载的组件会自动铺满小程序的整个页面.其他组件 ...
 - django 部署一个简单的博客系统
			
转:https://www.cnblogs.com/fnng/p/3737964.html 写的目的, 加深影响,熟悉开发流程, 开发都是练出来的. 环境 python3.5 windows 7 1. ...
 - [学习笔记]PCL使用心得
			
最近开始做研究生毕设,有一部分因为没有什么好的思路,就把以前用过的PCL点云搬出来,重新用源码装了一遍PCL,一开始装的过程中没什么大问题,在后面用的时候碰到了很多小问题,特此记录. 1.PCL版本问 ...
 - jmeter线程组介绍
			
Jmeter中的测试计划是一直有的,但可以在右侧修改名字,要开始做具体测试设计前,都需要在测试计划下边添加一个线程组,添加路径为鼠标捕获测试计划后,点击鼠标右键->添加->Threads( ...
 - beego跨域请求配置
			
不说废话 在main函数前加入如下代码 func init() { //跨域设置 var FilterGateWay = func(ctx *context.Context) {ctx.Respons ...
 - happybase(TSocket read 0 bytes)
			
关于报错happybase 是使用python连接hbase的一个第三方库,目前基于thrift1 .在使用过程中经常碰到报错 TTransportException(type=4, message= ...
 - CSS命名规范(规则)常用的CSS命名规则
			
CSS命名规范(规则)常用的CSS命名规则 CSS命名规范(规则)常用的CSS命名规则   头:header   内容:content/container   尾:footer ...
 - JS页面出现Uncaught SyntaxError: Unexpected token < 错误
			
action中的查询方法的返回值应该为NONE;
 - 团队博客作业week1——成员介绍
			
我们小组的成员由六人组成,其中包括一名七班的韩国同学. 1.玉钟焕同学 玉钟焕是七班的同学.由于老师为了让我们尽早体验与不熟悉的同学共同工作的环境而提出团队需要跨行政班.于是我们便邀请钟焕同学加入我们 ...