链接:

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

要用c++交哦, G++ MLE

不是很懂,先粘上慢慢学习

代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std; #define N 100 struct node
{
int ID;
node *next[];
}*Head; char c[], str[][]; void Add(char a[], char b[], char back[]) ///计算a+b, 结果存入c
{
int i, j, k;
int x, y, z;
int up; i = strlen(a)-;
j = strlen(b)-;
k = ;
up = ; while(i>= || j>=)
{
if(i<) x = ;
else x = a[i]-''; if(j<) y = ;
else y = b[j]-''; z = x+y+up;
c[k++] = z%+'';
up = z/;
i--;
j--;
}
if(up>) c[k++] = up+'';
for(i=; i<k; i++)
back[i] = c[k--i];
back[k] = '\0';
} void Tree_Insert(char str[], int Index)///插入单词
{
node *t, *s = Head;
int i;
int len = strlen(str); for(i=; i<len && i<; i++)
{
int id = str[i]-'';
if(s->next[id]==NULL)
{
t = new node();
for(int i=;i<;i++)t->next[i]=NULL;
t->ID = -;
s->next[id] = t;
}
s = s->next[id];
if(s->ID<) s->ID = Index;
}
} int Tree_Find(char str[])
{
node *s=Head;
int count, i;
int len = strlen(str); for(i=; i<len; i++)
{
int id = str[i]-'';
if(s->next[id]==NULL)
return -;
else
{
s = s->next[id];
count = s->ID;
}
}
return count;
} void Tree_Del(node *p)
{
for(int i=; i<; i++)
{
if(p->next[i]!=NULL)
Tree_Del(p->next[i]);
}
free(p);
} int main()
{
Head = new node();
for(int i=;i<;i++)Head->next[i]=NULL; Head->ID = -;
str[][] = '';
str[][] = ;
Tree_Insert(str[], ); str[][]='';
str[][]=;
Tree_Insert(str[], ); for(int i=; i<; i++)
{
int len1 = strlen(str[]);
int len2 = strlen(str[]); if(len2>)
{
str[][len2-]=;
str[][len1-]=;
}
Add(str[], str[], str[]); /// printf("%s\n",str[2]); Tree_Insert(str[], i);
strcpy(str[], str[]);
strcpy(str[], str[]); /// for(int i=0;i<100;i++)str[0][i]=str[1][i];
/// for(int i=0;i<100;i++)str[1][i]=str[2][i];
} int t, iCase=;
char str1[];
scanf("%d", &t);
while(t--)
{
scanf("%s", str1);
printf("Case #%d: %d\n", iCase++, Tree_Find(str1));
} Tree_Del(Head);
return ;
}

(字典树)Revenge of Fibonacci -- HDU -- 4099的更多相关文章

  1. 字典树 && 例题 Xor Sum HDU - 4825 (板子)

    一.字典树描述:Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优 ...

  2. BestCoder10 1001 Revenge of Fibonacci(hdu 5018) 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5018 题目意思:给出在 new Fibonacci 中最先的两个数 A 和 B(也就是f[1] = A ...

  3. HDU 4099 Revenge of Fibonacci(高精度+字典树)

    题意:对给定前缀(长度不超过40),找到一个最小的n,使得Fibonacci(n)前缀与给定前缀相同,如果在[0,99999]内找不到解,输出-1. 思路:用高精度加法计算斐波那契数列,因为给定前缀长 ...

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

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

  5. hdu 4099 Revenge of Fibonacci Trie树与模拟数位加法

    Revenge of Fibonacci 题意:给定fibonacci数列的前100000项的前n位(n<=40);问你这是fibonacci数列第几项的前缀?如若不在前100000项范围内,输 ...

  6. UVA - 12333 Revenge of Fibonacci 高精度加法 + 字典树

    题目:给定一个长度为40的数字,问其是否在前100000项fibonacci数的前缀 因为是前缀,容易想到字典树,同时因为数字的长度只有40,所以我们只要把fib数的前40位加入字典树即可.这里主要讨 ...

  7. UVa 12333 - Revenge of Fibonacci manweifc(模拟加法竖式 & 字典树)

    题意: 给定n个(n<=40)数字, 求100000个以内有没有前面n个数字符合给定的数字的fibonacci项, 如果有, 给出最小的fibonacci项, 如果没有, 输出-1. 分析: 可 ...

  8. hdu 4099 Revenge of Fibonacci 大数+压位+trie

    最近手感有点差,所以做点水题来锻炼一下信心. 下周的南京区域赛估计就是我的退役赛了,bless all. Revenge of Fibonacci Time Limit: 10000/5000 MS ...

  9. UVA-12333 Revenge of Fibonacci(竖式加法模拟 & 字典树)

    题目: 给出一个斐波那契数字的前缀,问第一个有这个前缀的数字在斐波那契数列中是第几个. 思路: 紫书提示:本题有一定效率要求.如果高精度代码比较慢,可能会超时. 利用滚动数组和竖式加法来模拟斐波那契相 ...

随机推荐

  1. GNU Radio: USRP2 and N2x0 Series

    Comparative features list 相对性能清单 Hardware Capabilities: 1 transceiver card slot External PPS referen ...

  2. thinkphp3.2.3+smarty解决success调用模板错误心得

    最近学习thinkphp上瘾,出现success找不到模板问题,查阅各大神解决方案,分享一下针对新手如何解决该问题,如有不对的地方请大神指正 1.首先修改自己的config文件,添加如下配置代码:// ...

  3. 三大运营商2G/3G/4G频率分配和网络制式

    经过二十多年长期的发展,我国的通信业逐渐形成了2G/3G/4G并存的局面,手机通讯信号传输都是通过一定频率传输的,而三大运营商所拥有的频率和网络制式不尽相同,这就造成同一部手机在三大运营商之间可能不通 ...

  4. 七.jQuery源码解析之.toArray()

    toArray()是将jQuery对象转换成数组 从源码中可以看到,这些常见的方法,都是直接从原生的 javascript中"借鉴"过来的.为什么这么说呢? 225行中,在运行时, ...

  5. SQOOP 添加oracle 驱动

      我的ORACLE 是11G  ,找到ojdbc6.jar,放到sqoop 的lib 下面,我的是cloudera 集群,目录是 /opt/cloudera/parcels/CDH-5.10.0-1 ...

  6. Struts2单例和多例

    struts2中action是多例的,即一个session产生一个action如果是单例的话,若出现两个用户都修改一个对象的属性值,则会因为用户修改时间不同,两个用户访问得到的属性不一样,操作得出的结 ...

  7. python的requests模块

    使用python进行接口测试得时候可以使用requests模块,是基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库 安装requests是模块 pip instal ...

  8. linux上安装oracle

    Linux上安装Oracle 10g:  http://69520.blog.51cto.com/59520/91156

  9. linux编程vim设置

    linux环境下c网络编程vim编辑工具设置,包括自动缩进,tab键对齐等.

  10. Elastic Search的学习

    那些必须要知道的事儿 自然语言处理 自然语言处理之中文分词器 什么是Apache Lucene 什么是elasticsearch 搭建elasticsearch环境 Windows下 Java环境配置 ...