Problem UVA1646-Edge Case

Time Limit: 3000 mSec

Problem Description

Input

For each test case, you get a single line containing one positive integer: n, with 3 ≤ n ≤ 10000.

Output

For each test case, a row containing the number of matchings in Cn.

Sample Input

3
4
100

Sample Output

4
7
792070839848372253127

题解:这个题一看样例就知道涉及高精度,不过只有加法,即便用C++写也没有什么难度,大致看了一下网上的题解,都是只说找规律没有证明(可能是我没翻到),因此在这里简单做个说明。

首先设最终结果为a[n],递推过程中需要引入一个中间序列b[n],b[n]的含义是强制让1、2两条边不连的匹配数。由此我们得到第一个递推式:

a[n] = b[n] + 2*b[n-1]

解释一下,n的时候的所有成立的情况可以分为三类,

1、1号边和2号边都不连

2、1号边连,2号边不连

3、2号边连,1号边不连

第一种情况自然对应b[n],第二种情况,如果1连,则1的左右两条边都不能连,这时看我引入的点P以及它连出的线段,它们将多边形分成上下两部分,只看上半部分,第二种情况的情况数就等于上半部分多边形强制让点P连的线段不连的情况数,即b[n-1],第三种情况类似。

我们再找一个关系式就可以递推了。从第一种情况入手,第一种情况等价于只有n-1个点时3号边不连,那我们就求强制让3不连的匹配数,发现不太好求,那就求强制让3连的匹配数,如果3号边连,那么它左右两条边都不能连,因此类似刚才的分析,匹配数等于b[n-1-1]=b[n-2],这样一来得到如下关系式:

b[n] = a[n-1]-b[n-2]

有了这两个关系式,解出数列a即可,基本操作,不再赘述。

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4
 5 const int maxn = 10000 + 100;
 6
 7 int Fib[maxn][15010];
 8 int n;
 9
10 void prepare()
11 {
12     Fib[3][0] = 1;
13     Fib[3][1] = 4;
14     Fib[4][0] = 1;
15     Fib[4][1] = 7;
16     for (int i = 5; i < maxn; i++)
17     {
18         for (int j = 1; j <= max(Fib[i - 1][0], Fib[i - 2][0]); j++)
19         {
20             Fib[i][j] += Fib[i - 1][j] + Fib[i - 2][j];
21             Fib[i][j + 1] = Fib[i][j] / 10;
22             Fib[i][j] %= 10;
23         }
24         Fib[i][0] = max(Fib[i - 1][0], Fib[i - 2][0]);
25         if (Fib[i][Fib[i][0] + 1])
26             Fib[i][0]++;
27     }
28 }
29
30 int main()
31 {
32     //freopen("input.txt", "r", stdin);
33     //freopen("output.txt", "w", stdout);
34     prepare();
35     while (~scanf("%d", &n))
36     {
37         for (int i = Fib[n][0]; i; i--)
38             printf("%d", Fib[n][i]);
39         printf("\n");
40     }
41     return 0;
42 }

转载于:https://www.cnblogs.com/npugen/p/10405690.html

UVA1646-Edge Case(递推+斐波那契数列)相关推荐

  1. 求斐波那契数列的第n项

    提要 本文介绍了4种(3种?)求斐波那契数列第n项的方法. 斐波那契数列简介 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda ...

  2. 斐波那契数列求解+尾递归

    1.普通递归 这里观察f[4]的递归树代替f[10]的递归树(后者比较大,画不下). 使用递归求解的时候复杂度为T(n)=T(n−1)+T(n−2)T(n)=T(n-1)+T(n-2)T(n)=T(n ...

  3. 【组合数学】递推方程 ( 递推方程内容概要 | 递推方程定义 | 递推方程示例说明 | 斐波那契数列 )

    文章目录 一.递推方程 内容概要 二.递推方程 定义 三.递推方程 示例 四.斐波那契数列 ( Fibnacci ) 一.递推方程 内容概要 递推方程 内容概要 : 递推方程定义 递推方程实例 常系数 ...

  4. 递归与递推 输出斐波拉契数列的前n项 python

    输出斐波拉契数列的前n项 python 递归与递推 文章目录 输出斐波拉契数列的前n项 python 题设 题解 题设 以下数列 0 1 1 2 3 5 8 13 21 - 被称为斐波纳契数列. 这个 ...

  5. 斐波拉契数列的递推递归求解算法

    介绍: 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数 ...

  6. 浅谈斐波那契数列——从递推到矩阵乘法

    说在前面 相信大家都已经知道这个中外著名的费波纳切数列了吧,关于费波那契数列有很多有趣的性质,但我们这里不讲,在这里我们只是利用斐波那契数列来引出另一个神奇的东西,矩阵乘法,递推在这里是起一个对比与铺 ...

  7. 斐波那契数列的递推与递归求法

    斐波那契数列的递推与递归求法: OVERVIEW 斐波那契数列的递推与递归求法: (1)递推求Fibonacci: (2)递归求Fibonacci: (3)递归求Fibonacci(记忆化数组优化): ...

  8. 斐波那契数列(递推)-C语言

    斐波那契数列(递推) 记忆化搜索---------数组充当备忘录 #include <stdio.h> int Fib(int n); int FibSum(int n); int mai ...

  9. 递归、递推法斐波那契数列

    编写2个函数,分别采用递归和递推方法计算斐波那契数列的前n项,函数返回列表,该列表中存放斐波那契数列,并写出程序调用这2个函数,输出斐波那契数列. #递归方法 def fib1 (n): if n & ...

最新文章

  1. 利用cre2进行分组模式匹配的实例
  2. Maya和Arnold的高级照明实践
  3. Vofuria 的 imageTarget 的图片无法显示或者显示为空白
  4. 国外centos服务器配置epel源
  5. inner join和left join还有right join的区别
  6. ‘聪明的搜索算法’ A*算法
  7. IntellIJ IDEA 启动 参数 配置
  8. Mysql的timestamp与datetime
  9. 动态页面技术(JSP/EL/JSTL)
  10. fragment在activity中的静态和动态用法_使用Matlab修改压缩Gif动态图片制作微信表情...
  11. 如何让Android手机远离间谍软件?看这里
  12. PLC基本指令系统优势
  13. 罗森伯格成功布线五星蕴海建国饭店
  14. qemu-guest-agent调研
  15. C语言关于有符号和无符号变量相互赋值的探讨
  16. Unable to preventDefault inside passive event listener due to target being treated as passive 怎么办?
  17. WPM2026 P沟道增强型MOS场效应晶体管
  18. 怎么样可以申请免费的云主机?
  19. gta5nat严格怎么办_GTA5OL显示我的NAT类型为完全 结果都看不到别的玩家
  20. 嵌入式面试题之单片机知识

热门文章

  1. AVVideoCompositionCoreAnimationTool not work --没有显示CALayer
  2. 考川大计算机硕士选专硕还是学硕好,考川大的财经学硕好还是西财的金融专硕好啊?......
  3. Pytorch Illegal instruction 解决(鸵鸟战术)
  4. 计算机不能识别华为手机,华为手机突然无法检测到SD卡怎么了?如何处理?
  5. linux 搭建 svn 小白教程
  6. 落地广州!百度智能云开物来了
  7. html打印A4长宽设置
  8. vgg 16模型的内存和参数量的计算
  9. AT89C51单片机外部中断使用和使用74LS373控制I/O口
  10. 使用vue-cli创建vue3+ts项目