(字典树)Revenge of Fibonacci -- HDU -- 4099
链接:
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的更多相关文章
- 字典树 && 例题 Xor Sum HDU - 4825 (板子)
一.字典树描述:Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优 ...
- BestCoder10 1001 Revenge of Fibonacci(hdu 5018) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5018 题目意思:给出在 new Fibonacci 中最先的两个数 A 和 B(也就是f[1] = A ...
- HDU 4099 Revenge of Fibonacci(高精度+字典树)
题意:对给定前缀(长度不超过40),找到一个最小的n,使得Fibonacci(n)前缀与给定前缀相同,如果在[0,99999]内找不到解,输出-1. 思路:用高精度加法计算斐波那契数列,因为给定前缀长 ...
- hdu 4099 Revenge of Fibonacci 字典树+大数
将斐波那契的前100000个,每个的前40位都插入到字典树里(其他位数删掉),然后直接查询字典树就行. 此题坑点在于 1.字典树的深度不能太大,事实上,超过40在hdu就会MLE…… 2.若大数加法时 ...
- hdu 4099 Revenge of Fibonacci Trie树与模拟数位加法
Revenge of Fibonacci 题意:给定fibonacci数列的前100000项的前n位(n<=40);问你这是fibonacci数列第几项的前缀?如若不在前100000项范围内,输 ...
- UVA - 12333 Revenge of Fibonacci 高精度加法 + 字典树
题目:给定一个长度为40的数字,问其是否在前100000项fibonacci数的前缀 因为是前缀,容易想到字典树,同时因为数字的长度只有40,所以我们只要把fib数的前40位加入字典树即可.这里主要讨 ...
- UVa 12333 - Revenge of Fibonacci manweifc(模拟加法竖式 & 字典树)
题意: 给定n个(n<=40)数字, 求100000个以内有没有前面n个数字符合给定的数字的fibonacci项, 如果有, 给出最小的fibonacci项, 如果没有, 输出-1. 分析: 可 ...
- hdu 4099 Revenge of Fibonacci 大数+压位+trie
最近手感有点差,所以做点水题来锻炼一下信心. 下周的南京区域赛估计就是我的退役赛了,bless all. Revenge of Fibonacci Time Limit: 10000/5000 MS ...
- UVA-12333 Revenge of Fibonacci(竖式加法模拟 & 字典树)
题目: 给出一个斐波那契数字的前缀,问第一个有这个前缀的数字在斐波那契数列中是第几个. 思路: 紫书提示:本题有一定效率要求.如果高精度代码比较慢,可能会超时. 利用滚动数组和竖式加法来模拟斐波那契相 ...
随机推荐
- MyEclipse 代码里的中文字太小设置方法
General>Appearance>Colors and Fonts>Basic>Text Font >Edit 把脚本字符改成“中欧字符”就可以了
- Linux Namespace
转载请注明出处,并保留以上所有对文章内容.图片.表格的来源的描述. 一.Linux Namespace Linux Namespace是Linux提供的一种OS-level virtualizatio ...
- Django Admin定制
Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件,使用方式有: 依赖APP: django.contrib.auth django.contrib.contenttyp ...
- Azkaban 使用问题及解决
什么是Azkaban Azkaban是一款基于Java编写的任务调度系统 任务调度:有四个任务脚A.B.C.D,其中任务A与任务B可以并行运行,然后任务C依赖任务A和任务B的运行结果,任务D依赖任务C ...
- mysql-6正则表达式
mysql正则表达式 匹配的两种方式: 1.模糊匹配:like 2.正则表达式 正则表达式语法: 语法 说明 ^ 起始位置.如果设置了RegExp对象的Multiline属性,^也匹配'\n'或'\r ...
- 「小程序JAVA实战」小程序的个人信息作品,收藏,关注(66)
转自:https://idig8.com/2018/09/24/xiaochengxujavashizhanxiaochengxudegerenxinxizuopinshoucangguanzhu65 ...
- phpstorm 7.1 注册码
phpstorm 7.1 注册码 EMBRACE ===== LICENSE BEGIN =====97393-12042010000004TIOFWznalqlK"vkzc2ilc8uub ...
- 迷你MVVM框架 avalonjs 0.93发布
这段时间吸取@limodou, @东灵等人的意见,做了以下改进 重构isArrayLike,提高avalon.each的性能,原来avalon.each是依赖于isArrayLike来判定是循环普通对 ...
- fabric本地一键部署LAMP
一.添加普通用户jeff执行sudo时无需输入密码 $ sudo vim /etc/sudoers ---------------------------------------> ## All ...
- python之with...as
[python之with...as] 参考:http://python.42qu.com/11155501