UVa 12333 - Revenge of Fibonacci <大数 字典树>
来源:互联网 发布:校园表白墙网站源码 编辑:程序博客网 时间:2024/04/27 22:36
做这道题横跨了四个月,经历了各种超时和WA,没用字典树之前还用纯ANSI C写了一遍还是超时,今天拿出来,又找了一遍错误还是没发现哪里的事。最后让学长瑾神帮我看了下,原来是题目要求的100000内的斐波那契数,写成了102400内,本来想多算几个总有好处,但这恰恰违反了题意啊,最后改了这一个地方终于AC了。
#include <bits/stdc++.h>using namespace std;struct Node{ int id; Node * next[10]; Node(){ id = -1; for(int i = 0; i < 10; ++i) next[i] = NULL; }};char Fib[50], In[50];int F[2][1024000];Node * const root = new Node();void add_node(char *str, int id){ Node * u = root; for(int i = 0, len = strlen(str); i < len && i <= 40; ++i){ int v = str[i] - '0'; if(!u->next[v]) u->next[v] = new Node(); u = u->next[v]; if(u->id == -1) u->id = id; }}int query(char *str){ Node * u = root; for(size_t i = 0, len = strlen(str); i < len; ++i){ u = u->next[str[i]-'0']; if(!u) return -1; } return u->id;}void init(){ memset(F, 0, sizeof(F)); F[0][0] = F[1][0] = 1; int s = 0, e = 1; add_node((char *)"1", 0); add_node((char *)"1", 1); for(int i = 2; i < 100000; ++i){ int p = i%2, q = (i+1)%2; for(int j = s; j < e; ++j) F[p][j] = F[p][j] + F[q][j]; for(int j = s; j < e; ++j) if(F[p][j]>=10){ F[p][j] %= 10; F[p][j+1] += 1; } if(F[p][e]) ++e; if(e - s > 50) ++s; int r = e - 1, cnt = 0; memset(Fib, 0, sizeof(Fib)); while(r >= 0 && cnt<45) Fib[cnt++] = F[p][r--] + '0'; add_node(Fib, i); }}int main(){ ios::sync_with_stdio(false); init(); int T; cin >> T; for(int i = 1; i <= T; ++i){ cin >> In; printf("Case #%d: %d\n", i, query(In)); } return 0;}
0 0
- UVa 12333 - Revenge of Fibonacci <大数 字典树>
- UVa 12333 – Revenge of Fibonacci [大数+字典树]
- UVa 12333 - Revenge of Fibonacci (大数 + 字典树)
- Uva 12333 Revenge of Fibonacci (字典树 + 大数加法运算)
- UVa 12333 - Revenge of Fibonacci(高精度计算+字典树)
- hdu 4099 Revenge of Fibonacci 大数加法+字典树
- hdu 4099 Revenge of Fibonacci 字典树+大数
- hdu 4099 Revenge of Fibonacci(字典树+大数加法)
- HDOJ 题目4099 Revenge of Fibonacci(大数, 字典树)
- HDU 4099 Revenge of Fibonacci(大数加法+字典树)
- hrbust 1209/hdu 4099 Revenge of Fibonacci【字典树+大数】
- HDU 4099 Revenge of Fibonacci(字典树+大数加法)
- UVa 12333 - Revenge of Fibonacci
- UVA 12333 Revenge of Fibonacci
- uva 12333 Revenge of Fibonacci
- UVa 12333 - Revenge of Fibonacci(字典树+高精度压位)
- hdu 4099 Revenge of Fibonacci (字典树)
- hdu 4099 Revenge of Fibonacci(字典树)
- 23种设计模式之十五(行为模式)State模式
- SharePoint JS Link 之(一) 改变column的颜色
- Building and Running Overview(官方)
- 使用JAVA搭建MySQL数据库
- Mac OX下终端命令行操作大全
- UVa 12333 - Revenge of Fibonacci <大数 字典树>
- 中断处理流程
- Java IO之文件输入、输出流
- matlab函数_常用于连通区域
- 最短路径A
- hdoj1170.
- sk_buff的操作函数
- PAT|中国大学MOOC-翁恺-C语言程序设计习题集29-32
- 23种设计模式之十六(行为模式)Observer模式