传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4099

这个题目就是一个坑或。

题意:给你不超过40的一串数字,问你这串数字是Fibonacci多少的开头几位数字,如果不存在则输出-1.

题解:明明说好的不超过40,但是在建字典数的时候不加i<41就超内存了,杭电你是想咋地,害的我比较好多人的代码,一点一点试出来的。

AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <list>
#include <deque>
#include <queue>
#include <iterator>
#include <stack>
#include <map>
#include <set>
#include <algorithm>
#include <cctype>
using namespace std;#define si1(a) scanf("%d",&a)
#define si2(a,b) scanf("%d%d",&a,&b)
#define sd1(a) scanf("%lf",&a)
#define sd2(a,b) scanf("%lf%lf",&a,&b)
#define ss1(s)  scanf("%s",s)
#define pi1(a)    printf("%d\n",a)
#define pi2(a,b)  printf("%d %d\n",a,b)
#define mset(a,b)   memset(a,b,sizeof(a))
#define forb(i,a,b)   for(int i=a;i<b;i++)
#define ford(i,a,b)   for(int i=a;i<=b;i++)typedef __int64 LL;
const int N=10;
const int INF=0x3f3f3f3f;
const double PI=acos(-1.0);
const double eps=1e-7;char str[4][100];struct Trie
{int v;Trie *next[N];Trie(){v=-1;for(int i=0;i<N;i++)next[i]=NULL;}
}*root;void creat_trie(char s[],int x)
{int len=strlen(s);Trie *p=root;for(int i=0;i<len&&i<41;i++)//这个地方太肯爹了,明明说好的不超过40,不加i<41就超内存了,杭电你是想咋地{int id=s[i]-'0';if(p->next[id]==NULL)p->next[id]=new Trie();p=p->next[id];if(p->v<0)p->v=x;}
}void add(char a[],char b[],char c[])
{int lena=strlen(a)-1,lenb=strlen(b)-1;int k=0,up=0;int x,y,z;while(lena>=0||lenb>=0){if(lena<0) x=0;else x=a[lena]-'0';if(lenb<0)  y=0;else y=b[lenb]-'0';z=x+y+up;c[k++]=z%10+'0';up=z/10;lena--;lenb--;}if(up>0)    c[k++]=up+'0';c[k]=0;for(int i=0;i<k/2;i++)swap(c[i],c[k-i-1]);
//    cout<<k<<" "<<c<<endl;system("pause");
}int find_trie(char st[])
{Trie *p=root;int len=strlen(st);int tmp;for(int i=0;i<len;i++){int id=st[i]-'0';if(p->next[id]==NULL)return -1;else{p=p->next[id];tmp=p->v;}}return tmp;
}void init()
{str[1][0]='1';  str[1][1]=0;creat_trie(str[1],0);str[2][0]='1';  str[2][1]=0;creat_trie(str[2],1);for(int i=2;i<100000;i++)//注意题目是小于,不能取等号。。{int len1=strlen(str[1]);int len2=strlen(str[2]);if(len2>60)//舍去地位{str[2][len2-1]=0;str[1][len1-1]=0;}add(str[1],str[2],str[3]);creat_trie(str[3],i);strcpy(str[1],str[2]);strcpy(str[2],str[3]);}
}int main()
{
//    freopen("input.txt","r",stdin);root=new Trie();init();int T,ca=0;char st[66];si1(T);while(T--){ss1(st);printf("Case #%d: %d\n",++ca,find_trie(st));}return 0 ;
}

转载于:https://www.cnblogs.com/suncoolcat/p/3343540.html

HDU 4099 Revenge of Fibonacci (数学+字典数)相关推荐

  1. hdu 4099 Revenge of Fibonacci 字典树+大数

    将斐波那契的前100000个,每个的前40位都插入到字典树里(其他位数删掉),然后直接查询字典树就行. 此题坑点在于 1.字典树的深度不能太大,事实上,超过40在hdu就会MLE-- 2.若大数加法时 ...

  2. 数学速算法_小学初中高中 数学奥数教材及习题讲解(共42册PDF)

    学习 勤育儿    |    爱自己 在育儿的道路上,家长和孩子一同成长:慢慢陪孩子走,把我们的时间浪费在孩子身上,是世间最有价值的浪费!资源介绍奥数对青少年的脑力锻炼有着一定的作用,可以通过奥数对思 ...

  3. hdu 4099 字典树 + 斐波那契

    题意:       给你一个串(最长40位)问你这个串是斐波那契F(n)  n <= 99999中的那个数的前缀,如果存在多个输出最小的n否则输出-1. 思路:       给的串最长40位,那 ...

  4. HDU 5536 Chip Factory (01字典树)

    传送门:HDU 5536 题目大意: 在一个数组中找出 (s[i]+s[j])^s[k] 最大的值,其中 i.j.k 各不相同. 前至技能:01字典树详解. 思路: 01字典树模板可以解决查找与 x ...

  5. 摆胯教学分解_聚十年求索,筑理想课堂——厦门市梧侣学校十周年庆区级教学小学数学(数与形)...

    寒来暑往,秋收冬藏.养精蓄锐是为了走更远的路,厚积薄发是为了更好地前行.梧侣十年,不忘初心,砥砺奋进.梧侣十年,不忘初心,昂首阔步. 十年来,学校始终秉承朱永新的新教育理念,致力于探寻理想课堂,追梦幸 ...

  6. 求近似数最值_干货|初中数学《数的开方》知识点梳理

    本章内容课标的要求 ● 1.了解平方根.算术平方根.立方根的概念,会用根号表示数的平方根.算术平方根.立方根. ● 2.了解乘方与开方互为逆运算,会用平方运算求百以内整数的平方根,会用立方运算会求百以 ...

  7. HDU 2643 Rank:第二类Stirling数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2643 题意: 有n个个选手参赛,问排名有多少种情况(可以并列). 题解: 简化问题: 将n个不同的元素 ...

  8. HDU 3240 Counting Binary Trees 数论-卡特兰数

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3240 卡特兰数递推公式h(i)=h(i-1)*(4*i-2)/(i+1) 如果直接算每一步,然后mo ...

  9. 【考研数学】数一-数学概念anki卡片合集-547张-23000字-22电子科大考研上岸整理

    样本空间的定义 定义:一切基本事件的集合 样本空间的表示方法 记做Ω 事件的表示方式 表示方式:字母A,B,C- 随机事件与样本空间的关系 随机事件可视为样本空间的子集 事件A发生的含义 事件A发生 ...

最新文章

  1. Oracle中的NULL(一、问题引入)
  2. 你只会用 ! = null 判空?嘿嘿!
  3. UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 199: illegal multibyte sequence
  4. 超出部分用省略号显示 以及 bootStrapTable 的属性一览表
  5. 单链队列实现及基本操作
  6. idm 假冒_IDM出现假冒序列号问题解决
  7. FPGA实现低高速接口更新说明
  8. Apache Maven 入门篇 ( 上 )
  9. AAAI'22 | 中稿的论文网友找出致命漏洞?
  10. node + node-webkit实现电脑文件信息扫描小插件
  11. 兆比特每秒和兆字节每秒_bit、Byte、Mbps、Mb/s区别
  12. 网站地图制作百度地图google地图制作方法
  13. Pytorch实现word2vec(Skip-gram训练方式)
  14. Dubbo-06 20190320
  15. 四、全国计算机三级数据库考试——操作题(6—10套)
  16. 二叉树知道前序和中序求后序,知道中序后序求中序
  17. vulnhub靶场之HA: Joker
  18. 利用webSocket实现扫码登录PC端
  19. 真心付出的一方失恋为什么痛,甚至厌世?
  20. 前端面试笔试错题指南(四)

热门文章

  1. 判断浏览器设置相应的CSS
  2. python文档字符串格式_Python字符串及文本模式方法详解
  3. 孪生网络图像相似度_孪生网络:使用双头神经网络进行元学习
  4. java 圆心_JAVA程序帮忙看下把
  5. oracle 仲宏伟,Oracle数据库Merge的使用
  6. Python机器学习:SVM008SVM思想解决回归问题
  7. Python元组的操作
  8. matlab刘卫国课后答案第三版,MATLAB程序设计与应用(刘卫国编)课后实验答案
  9. php 中间表统计,多对多中间表详解
  10. MySQL 数据库设计规范