BZOJ1002 FJOI2007 轮状病毒 【基尔霍夫矩阵+高精度】
BZOJ1002 FJOI2007 轮状病毒
Description
轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的。一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道。如下图所示
N轮状病毒的产生规律是在一个N轮状基中删去若干条边,使得各原子之间有唯一的信息通道,例如共有16个不同的3轮状病毒,如下图所示
现给定n(N<=100),编程计算有多少个不同的n轮状病毒
Input
第一行有1个正整数n
Output
计算出的不同的n轮状病毒数输出
Sample Input
3
Sample Output
16
基尔霍夫矩阵推一推式子
然后加上高精度
#include<bits/stdc++.h>
using namespace std;
struct Big{
int t[110],len;
Big(){len=1;}
};
Big add(Big a,Big b){
a.len=max(a.len,b.len);
for(int i=1;i<=a.len;i++)a.t[i]=a.t[i]+b.t[i];
for(int i=1;i<=a.len;i++){
if(a.t[i]>=10){
a.t[i+1]+=a.t[i]/10;
a.t[i]%=10;
if(i==a.len)++a.len;
}
if(a.t[i]<0){
a.t[i]+=10;
a.t[i+1]--;
if(i+1==a.len&&!a.t[a.len])--a.len;
}
}
return a;
}
Big rdu(Big a,Big b){
for(int i=1;i<=a.len;i++){
a.t[i]-=b.t[i];
if(a.t[i]<0){
a.t[i]+=10;
a.t[i+1]--;
}
}
while(!a.t[a.len])a.len--;
return a;
}
Big add(Big a,int b){
int tmp=0;
while(b){
++tmp;
a.t[tmp]+=b;
b=a.t[tmp]/10;
a.t[tmp]%=10;
}
a.len=max(a.len,tmp);
return a;
}
Big mul(Big a,int b){
for(int i=1;i<=a.len;i++)a.t[i]*=b;
for(int i=1;i<=a.len;i++){
if(a.t[i]>=10){
a.t[i+1]+=a.t[i]/10;
a.t[i]%=10;
if(i==a.len)++a.len;
}
}
return a;
}
Big f[101];
int main(){
f[1].t[1]=1;
f[2].t[1]=5;
int n;cin>>n;
for(int i=3;i<=n;i++)f[i]=add(rdu(mul(f[i-1],3),f[i-2]),2);
for(int i=f[n].len;i>=1;i--)printf("%d",f[n].t[i]);
return 0;
}
BZOJ1002 FJOI2007 轮状病毒 【基尔霍夫矩阵+高精度】的更多相关文章
- bzoj1002: [FJOI2007]轮状病毒(基尔霍夫矩阵)
1002: [FJOI2007]轮状病毒 题目:传送门 题解: 决定开始板刷的第一题... 看到这题的时候想:这不就是求有多少种最小生成树的方式吗? 不会啊!!!%题解... 什么鬼?基尔霍夫矩阵?? ...
- [bzoj1002] [FJOI2007]轮状病毒轮状病毒(基尔霍夫矩阵)
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下 ...
- BZOJ 1002 - 轮状病毒 - [基尔霍夫矩阵(待补)+高精度]
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1002 Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生 ...
- 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: 5577 Solved: 3031[Submit][Statu ...
- bzoj1002 轮状病毒 暴力打标找规律/基尔霍夫矩阵+高斯消元
基本思路: 1.先观察规律,写写画画未果 2.写程序暴力打表找规律,找出规律 1-15的答案:1 5 16 45 121 320 841 2205 5776 151 ...
- 【BZOJ】1002:轮状病毒(基尔霍夫矩阵【附公式推导】或打表)
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ...
- BZOJ 4031 HEOI2015 小Z的房间 基尔霍夫矩阵+行列式+高斯消元 (附带行列式小结)
原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4031 Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可 ...
- bzoj 1002 找规律(基尔霍夫矩阵)
网上说的是什么基尔霍夫矩阵,没学过这个,打个表找下规律,发现 w[i]=3*w[i-1]-w[i-2]+2; 然后写个高精直接递推就行了 //By BLADEVIL var n :longint; a ...
随机推荐
- python 编程测试练习答案
-- coding: UTF-8 -- file('B.txt','wb').write(file('A.txt','rb').read()) 作业内容 这次作业较为简单,从一个a.txt的多行文本文 ...
- response.getWriter().write("中文");乱码问题
起初遇到这个问题,网上几乎所有的建议都是: response.setHeader("Content-type", "text/html;charset=UTF-8&quo ...
- [spring]<context:property-placeholder/>
问题: 有些参数在某些阶段中是常量,这些参数在不同阶段之间又往往需要改变,如: 在开发阶段我们连接数据库时的url,username,password等信息 分布式应用中client端的server地 ...
- Unity使用Win10语音
1. 引入头文件 using UnityEngine.Windows.Speech; 2. 设置识别词 public string[] keywords = new string[] { ...
- jmeter-00 JMeter 运行过程
一.GUI mode 图形化界面运行 to run JMeter, run the jmeter.bat (for Windows) or jmeter (for Unix) file. These ...
- UVA-11294 Wedding (2-SAT)
题目大意:一张长桌,n对夫妻,编号为0~n,这些人要坐在长桌两侧,每对夫妻不能坐在同一侧.其中,有2*m个人相互讨厌,编号为0的夫妻中的妻子不愿意让对面那一侧中有两个相互吵过架的人,找一种排座位方案. ...
- nyoj151——中国剩余定理
生理周期 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 142220 Accepted: 45744 Descripti ...
- word2016_添加标题和目录
标题 开始->标题(层级可选) 目录 引用->目录->自动目录
- Spring3.0 核心jar包详解
org.springframework.aop 包含在应用中使用Spring的AOP特性时所需的类. org.springframework.asm Spring独立的ASM程序, Spring ...
- ansible入门五
一.Ansible条件测试 在ansible中还可以进行条件测试.如果需要根据变量.facts或此前任务的执行结果来做为某task执行与否的前提时要用到条件测试. 1. when语句 在task后添加 ...