首页 > 其他分享 >【洛谷 P2437】蜜蜂路线 题解(递归+记忆化搜索+高精度)

【洛谷 P2437】蜜蜂路线 题解(递归+记忆化搜索+高精度)

时间:2024-02-05 16:32:49浏览次数:25  
标签:洛谷 ++ 题解 v3 it3 vector it2 P2437 it1

蜜蜂路线

题目描述

一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房 【洛谷 P2437】蜜蜂路线 题解(递归+记忆化搜索+高精度)_ios 开始爬到蜂房 【洛谷 P2437】蜜蜂路线 题解(递归+记忆化搜索+高精度)_#include_02【洛谷 P2437】蜜蜂路线 题解(递归+记忆化搜索+高精度)_#include_03,有多少种爬行路线?(备注:题面有误,右上角应为 【洛谷 P2437】蜜蜂路线 题解(递归+记忆化搜索+高精度)_#include_04

【洛谷 P2437】蜜蜂路线 题解(递归+记忆化搜索+高精度)_数据_05

输入格式

输入 【洛谷 P2437】蜜蜂路线 题解(递归+记忆化搜索+高精度)_#include_06 的值

输出格式

爬行有多少种路线

样例 #1

样例输入 #1

1 14

样例输出 #1

377

提示

对于100%的数据,【洛谷 P2437】蜜蜂路线 题解(递归+记忆化搜索+高精度)_ios_07

思路

f(x) = f(x - 1) + f(x - 2) 如果m == x或m + 1 == x,则f(x) = 1 数据过大,long long不够大,必须上高精度。

AC代码

#include <iostream>
#include <vector>
#define AUTHOR "HEX9CF"
using namespace std;

const int maxn = 1005;

int n, m;
vector<int> mem[maxn];

vector<int> add(vector<int> v1, vector<int> v2) {
	vector<int> v3;
	vector<int>::iterator it1 = v1.begin();
	vector<int>::iterator it2 = v2.begin();
	for(; it1 != v1.end() && it2 != v2.end(); it1++, it2++) {
		int sum = *it1 + *it2;
		v3.push_back(sum);
	}
	for(; it1 != v1.end(); it1++) {
		v3.push_back(*it1);
	}
	for(; it2 != v2.end(); it2++) {
		v3.push_back(*it2);
	}
	vector<int>::iterator it3 = v3.begin();
	bool flg = false;
	for(; it3 != v3.end(); it3++) {
		if(*it3 > 9) {
			*it3 -= 10;
			if(it3 + 1 == v3.end()) {
				flg = true;
			} else {
				*(it3 + 1) += 1;
			}
		}
	}
	if(flg) {
		v3.push_back(1);
	}
	return v3;
}

void printv(vector<int> v) {
	vector<int>::reverse_iterator rit = v.rbegin();
	for(; rit != v.rend(); rit++) {
		cout << *rit;
	}
	cout << endl;
}

void f(int x) {
	if(!mem[x].empty()) {
		return;
	}
	if(m == x || m + 1 == x) {
		mem[x].push_back(1);
		return;
	}
	f(x - 1);
	f(x - 2);
	mem[x] = add(mem[x - 1], mem[x - 2]);
}

int main() {
	cin >> m >> n;
	f(n);
	printv(mem[n]);
	return 0;
}

标签:洛谷,++,题解,v3,it3,vector,it2,P2437,it1
From: https://blog.51cto.com/HEX9CF/9610269

相关文章

  • 题解 ARC171C【Swap on Tree】
    每棵子树内只可能有至多一个外来的数,且外来的数是多少并不影响方案数,因此考虑设\(f_{u,i,0/1}\)表示考虑以\(u\)为根的子树,与\(u\)相连的所有边中断了\(i\)条,且\(u\)与其父亲之间的边有没有断的方案数。设\(g_{u,c}=\sumf_{u,i,c}\)。每个节点的初始状态是\(f_{u,0,......
  • 题解 ARC171B【Chmax】
    考察题面中的操作究竟做了什么,不难发现其实是将所有满足\(P_i>i\)的\(i\toP_i\)连边,得到若干条链,然后\(B_i\)即为\(i\)所在链的最后一个节点。显然,存在\(A_i<i\)时无解,存在\(A_i\nei\)但\(A_j=i\)时也无解。否则,每个\(A_i\nei\)的位置填的数都唯一确定......
  • [ABC238F] Two Exams 题解
    题目链接题意有\(N\)个人,有两个\(1\simN\)排列\(P,Q\),在其中选择\(K\)个数,要满足:如果\(P_x<P_y\)且\(Q_x<Q_y\)则不能选了\(y\)而不选\(x\)。思路首先按照\(P\)从小到大排序,这样的话只用考虑\(Q\)。设\(f_{i,j,k}\)表示从前\(i\)个数中选\(j\)个,其中......
  • 【题解】U405180 计算平方和
    \(\mathbf{Part\0}\)目录\(/\\mathbf{Contents}\)\(\mathbf{Part\1}\)题目大意\(/\\mathbf{Item\content}\)\(\mathbf{Part\2}\)题解\(/\\mathbf{Solution}\)\(\mathbf{Part\2.1}\text{C}\)++神奇整数类型之\(\text{__int128}/......
  • 洛谷题单指南-递推与递归-P1028 [NOIP2001 普及组] 数的计算
    原题链接:https://www.luogu.com.cn/problem/P1028题意解读:给定n,构造数列,可以用递归或者递推。解题思路:1、递归定义count(n)返回数列的个数  n==1时,count(n)=1  n!=1时,count(n)=1+count(1)+count(2)+...+count(n/2)注意,递归会导致大量重复计算,需要用一个hash......
  • [ARC162D] Smallest Vertices 题解
    题目链接点击打开链接题目解法这种树的形态计数题首先可以想到\(prufer\)序列计数,如果没有任何限制,那么方案数为\(\prod\frac{(n-2)!}{deg_i}\),其中\(deg_1=d_1-1,deg_i=d_i(2\lei\len)\)对于每个点分开求贡献考虑这个式子只和点的个数和子树内的\(\sumdeg\)有关......
  • 洛谷题单指南-递推与递归-P1044 [NOIP2003 普及组] 栈
    原题链接:https://www.luogu.com.cn/problem/P1044题意解读:一组数入栈、出栈的方案数,如果了解卡特兰数,此题可以秒杀;如果不了解,也可以通过递归或者递推来解决;最次,可以通过DFS暴搜出方案数,当然对于n个数,一共有n次入栈、n次出栈,一共2n次,每次要么入栈要么出栈,总搜索次数在22n规模,n最......
  • P3604 美好的每一天 题解
    题目链接:美好的每一天经典题,这种字符串重排以后回文,优先考虑异或操作。考虑对一个字符串状态压缩,每个字符表示为\(1<<(c-97)\),然后将它们异或起来就可以得到一个字符串的状态压缩情况。考虑每一位异或情况,如果为偶数个单个字符则为\(0\),奇数则为\(1\),注意可以重排,那么当且仅......
  • 2024牛客寒假算法基础集训营1 J 又鸟之亦心 题解
    Question2024牛客寒假算法基础集训营1J又鸟之亦心Solution挺好的一个题,给了我很多启发显然,先二分最大值\(D\),关键在于\(check\)怎么写考虑到两个人是相对的,第\(i\)次之后肯定有一个人在\(a_i\),具体是谁不重要,也不需要关注是怎么走过来的,我们需要去维护另外一个人可......
  • 2024牛客寒假算法基础集训营1 K 牛镇公务员考试 题解
    Question2024牛客寒假算法基础集训营1K牛镇公务员考试给出一张试卷有\(n\)道单选题,每道题用一个整数\(a_i\)和一个长度为\(5\)的字符串\(s_i\)表示,其中第\(i\)道题的题面为:第\(a_i\)道题的答案是()A.\(s_1\)B.\(s_2\)C.\(s_3\)D.\(s_4\)E.\(s_5\)问:正......