BZOJ_1002_[FJOI2007]_轮状病毒_(递推+高精)
描述
http://www.lydsy.com/JudgeOnline/problem.php?id=1002
)*&*(^&*^&*^**()*)
1002: [FJOI2007]轮状病毒
Time Limit: 1 Sec Memory Limit: 162 MB
Submit: 4060 Solved: 2239
[Submit][Status][Discuss]
Description
轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的。一个N轮状基由圆环上N个不同的基原子
和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道。如下图所示

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

Input
第一行有1个正整数n
Output
计算出的不同的n轮状病毒数输出
Sample Input
Sample Output
HINT
Source
分析
题目是求一种特殊的图的生成树的个数,但是貌似有更一般的算法,等明天再看吧...
只搞懂了打表找规律,然后题推的解法.
随便写个暴力打个表(其实我并不会写,明天再写吧今天好累),找一找规律.
1~14的答案如下
1 5 16 45 121 320 841 2205 5776 15125 39601 103680 271441 710645
奇数项
1 16 121 841 5776 39601 271441
开根号得
1 4 11 29 76 199 521
a[i]=a[i-1]*3-a[i-2]
偶数项
5 45 320 2205 15125 103680 710645
除以5得
1 9 64 441 3025 20736 142129
开根号得
1 3 8 21 55 144 377
a[i]=a[i-1]*3-a[i-2]
注意要用高精(学习了别人的高精写法,自己写得太小学生了)
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
struct Big_Integer{
int x[],cnt;
int & operator [] (int id){
return x[id];
}
void operator = (int y){
x[]=y;
cnt=;
}
}f[];
Big_Integer operator - (Big_Integer x,Big_Integer y){
Big_Integer z=f[];
z.cnt=max(x.cnt,y.cnt);
for(int i=;i<=z.cnt;i++){
z[i]+=x[i]-y[i];
if(z[i]<) z[i+]--, z[i]+=;
}
while(z.cnt&&!z[z.cnt]) z.cnt--;
return z;
}
Big_Integer operator * (Big_Integer x,Big_Integer y){
Big_Integer z=f[];
for(int i=;i<=x.cnt;i++){
for(int j=;j<=y.cnt;j++){
z[i+j-]+=x[i]*y[j],z[i+j]+=z[i+j-]/,z[i+j-]%=;
}
}
z.cnt=x.cnt+y.cnt;
if(!z[z.cnt]) z.cnt--;
return z;
}
Big_Integer operator * (Big_Integer x,int y){
Big_Integer z=f[];
for(int i=;i<=x.cnt;i++){
z[i]+=x[i]*y,z[i+]+=z[i]/,z[i]%=;
}
z.cnt=x.cnt;
if(z[z.cnt+]) z.cnt++;
return z;
}
ostream& operator << (ostream &out,Big_Integer x){
for(int i=x.cnt;i;i--){
out << x[i];
}
return out;
}
int n;
int main(){
cin >> n;
f[]=;
f[]=n&?:;
int last=n+>>;
for(int i=;i<=last;i++){
f[i]=f[i-]*-f[i-];
}
cout << f[last]*f[last]*(n&?:) << endl;
return ;
}
BZOJ_1002_[FJOI2007]_轮状病毒_(递推+高精)的更多相关文章
- HDU - 5686-Problem B (递推+高精)
度熊面前有一个全是由1构成的字符串,被称为全1序列.你可以合并任意相邻的两个1,从而形成一个新的序列.对于给定的一个全1序列,请计算根据以上方法,可以构成多少种不同的序列. Input 这里包括多组测 ...
- FJOI2007轮状病毒 行列式递推详细证明
题目链接 题目给了你一个奇怪的图,让你求它的生成树个数. 开始写了一个矩阵树: #include<cstdio> #include<cstdlib> #include<c ...
- BZOJ1002 [FJOI2007] 轮状病毒 【递推】
题目分析: 推基尔霍夫矩阵后可以发现递推式 代码: n = input() f0 = 1 f1 = 5 f3 = 0 if n == 1: print f0 elif n == 2: print f1 ...
- BZOJ 1002 FJOI2007 轮状病毒 递推+高精度
题目大意:轮状病毒基定义如图.求有多少n轮状病毒 这个递推实在是不会--所以我选择了打表找规律 首先执行下面程序 #include<cstdio> #include<cstring& ...
- BZOJ_1925_[Sdoi2010]地精部落_递推
BZOJ_1925_[Sdoi2010]地精部落_递推 Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 ...
- 【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度
1002: [FJOI2007]轮状病毒 Description 给定n(N<=100),编程计算有多少个不同的n轮状病毒. Input 第一行有1个正整数n. Output 将编程计算出的不同 ...
- [ACM_动态规划] 数字三角形(数塔)_递推_记忆化搜索
1.直接用递归函数计算状态转移方程,效率十分低下,可以考虑用递推方法,其实就是“正着推导,逆着计算” #include<iostream> #include<algorithm> ...
- [bzoj1925][Sdoi2010]地精部落_递推_动态规划
地精部落 bzoj-1925 Sdoi-2010 题目大意:给你一个数n和模数p,求1~n的排列中满足每一个数的旁边两个数,要么一个是边界,要么都比它大,要么都比它小(波浪排列个数) 注释:$1\le ...
- BZOJ-1002 轮状病毒 高精度加减+Kirchhoff矩阵数定理+递推
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3543 Solved: 1953 [Submit][Statu ...
随机推荐
- Android开发MVP模式解析
http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html 在开发Android应用时,相信很多同学遇到和我一样的情况,虽然 ...
- Java线程间通信-回调的实现方式
Java线程间通信-回调的实现方式 Java线程间通信是非常复杂的问题的.线程间通信问题本质上是如何将与线程相关的变量或者对象传递给别的线程,从而实现交互. 比如举一个简单例子,有一个多线程的 ...
- 代码:Masonry 第三方框架
必备宏使用前提: //define this constant if you want to use Masonry without the 'mas_' prefix #define MAS_SHO ...
- javascript 将多维数组转换为一维数组
/** * 2013年9月去面试的时候,有面试过这样子一道题目: * 题目是这样子的:将一个多维数组转换成一维数组并返回该数组,类似 * [1,2,3,[4,5,6,[7,8]],9]转换后为:[1, ...
- Javascript三元条件运算符
今天谈一个小知识点,三元运算符.三元运算,顾名思义会有三个要素,表达式的大致组成为condition ? expr1 : expr2:一个语句加两个表达式.问号之前为判断语句.如果为真,则执行第一个表 ...
- 嵌入Web资源的方法
可以将js .图片.css等嵌入Assembly中,这样就不用将文件在aspx中写了,特别适合做自定义控件的时候将控件用到的资源打包. 将文件放到项目的合适路径,比如jpg文件所在路径的namespa ...
- ajax的访问 WebService 的方法
如果想用ajax进行访问 首先在web.config里进行设置 添加在 <webServices> <protocols> <add name= "HttpPo ...
- 隐性改变display类型
有一个有趣的现象就是当为元素(不论之前是什么类型元素,display:none 除外)设置以下 2 个句之一: position : absolutefloat : left 或 float:righ ...
- php内存申请和销毁
内存申请 ZendMM使用自身heap层申请内存追踪结果: ZEND_ASSIGN_SPEC_CV_CONST_HANDLER (......) -> ALLOC_ZVAL(......) -& ...
- 表格行变换顺序功能(jquery)
周末写了个更改表格行顺序的小功能,直接贴代码 表格部分如下: <table class="table" id="test_table"> <t ...