字典树,数学(Revenge of Fibonacci,hdu 4099)
来源:互联网 发布:在淘宝卖情趣用品 编辑:程序博客网 时间:2024/05/17 21:44
不知到怎么回事,现在网上题解的代码大部分都会MLE。
改成离线算法,就OK了。
#include<bits/stdc++.h>using namespace std;vector<int*>vec;struct Node{ int id; Node* next[10]; Node() { id=-1; memset(next,0,sizeof(next)); }};Node* root;void add(char str[],int val){ Node* p=root; int k=0; while(str[k]) { int id=str[k++]-'0'; if(!p->next[id]) p->next[id]=new Node; p=p->next[id]; if(p->id==-1) p->id=val; } vec.push_back(&(p->id));}void qry(char str[],int val){ Node* p=root; int k=0; while(str[k]&&p->next[str[k]-'0']) { if(p->id==-1) p->id=val; p=p->next[str[k++]-'0']; } if(p->id==-1) p->id=val;}string sum(string s1,string s2){ if(s1.length()<s2.length()) { string temp=s1; s1=s2; s2=temp; } int i,j; for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--) { s1[i]=char(s1[i]+(j>=0?s2[j]-'0':0)); //注意细节 if(s1[i]-'0'>=10) { s1[i]=char((s1[i]-'0')%10+'0'); if(i) s1[i-1]++; else s1='1'+s1; } } return s1;}int main(){ root=new Node; int T; scanf("%d",&T); char str[110]; for(int t=1;t<=T;t++) { scanf("%s",str); add(str,-1); } string a="1"; string b="1"; str[0]='1'; str[1]=0; qry(str,0); for(int i=2;i<1e5;i++) { string c=sum(a,b); a=b; b=c; if(a.size()>50||b.size()>50) { int cha=max(a.size()-50,b.size()-50); a.resize(a.size()-cha); b.resize(b.size()-cha); } for(unsigned int j=0;j<b.size();j++) str[j]=b[j]; str[b.size()]='\0'; str[40]='\0'; qry(str,i); } for(unsigned int i=0;i<vec.size();i++) printf("Case #%d: %d\n",i+1,*vec[i]); return 0;}
0 0
- 字典树,数学(Revenge of Fibonacci,hdu 4099)
- HDU 4099 Revenge of Fibonacci (数学+字典数)
- hdu 4099 Revenge of Fibonacci (字典树)
- hdu 4099 Revenge of Fibonacci(字典树)
- hdu 4099 Revenge of Fibonacci(字典树)
- hdu 4099 Revenge of Fibonacci(字典树+大数加法)
- HDU 4099 Revenge of Fibonacci(字典树+大数加法)
- HDU 5018 Revenge of Fibonacci(数学)
- hdu 4099 Revenge of Fibonacci 大数加法+字典树
- hdu 4099 Revenge of Fibonacci 字典树+大数
- HDU 4099 Revenge of Fibonacci(高精度+字典树)
- HDU 4099 Revenge of Fibonacci(高精度加法+字典树Trie)
- HDU 4099 Revenge of Fibonacci(大数加法+字典树)
- hrbust 1209/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 (Trie树)
- 深入浅出RxJava
- Leetcode Longest Substring Without Repeating Characters
- 解决makefile不兼容的问题:make降级
- [面试]之:yy二面和hr面
- Qt中常见控件、布局、信号和槽的简单介绍与实现
- 字典树,数学(Revenge of Fibonacci,hdu 4099)
- 【题】【数学(卡特兰数)】NKOJ3798 有趣的数列
- 记录源码学习列表
- 分布式跟踪系统(一):Zipkin的背景和设计
- 赛门铁克通配型SSL证书
- 关于秩的等式与不等式总结
- 一道很有趣的关于printf的笔试题
- 蓝牙操作笔记 持续更新
- HDU 5919 Sequence II 主席树