11 2012 档案
摘要:/*题目意思:相信大家都知道搜狗拼音的词语联想功能。这题的大致意思就是根据你的字典里的词出现的频率,把词语联想的功能模拟一遍。每多一个按键,你只需输出第一联想到的东西,如果没有,就输出MANULLY。一个按键对应一个字母,但是一个按键有3或者4个选择的字母。注意:在你查询过程中,是不会额外增加单词的。这题真的花了我不少时间~T T,过去用的字典树模板实在是通用性太差劲了。终于给我百度到一个挺好的模板。字典树的最大复杂度为Q(n),n代表字符串的长度。我真心没有想到这题可以用字典树+深搜做~,思路也是百度来的。经过抄袭了N个大神的模板和学习后,整理如下:AC状态:0ms 660KB*/#incl
阅读全文
摘要:/*看到这题的限时和空间~,马上不用纠结了,暴搜+剪枝必过要是哪个大神能告诉我更好的剪枝步骤,我会很感激的。因为我的代码简直是蜗牛速度~456ms 4900KB水过*/#include <iostream>#include<cstdio>#include<cstring>#include<queue>#include<set>#include<memory.h>#include<algorithm>using namespace std;#define inf 0x3ffffff#define M 1005in
阅读全文
摘要:双向广搜如果想要得到最优路径,就得在扩展节点处判断是否有重合,而不是在元素出队时。一般来说双向广搜比单向的更耗空间。
阅读全文
摘要:/*RESCUE*/#include <iostream>#include<cstdio>#include<cstring>#include<queue>#include<set>#include<memory.h>#include<algorithm>using namespace std;#define maxn 220char start[6],end[6];bool vis[10005];struct re{ int str[4]; int num; re(const char *a) { num=0;
阅读全文
摘要:/*T T坑爹的八数码*/#include<iostream>#include<queue>#include<utility>#include<set>#include<cstdio>using namespace std;#define maxn 300char dir1[4]= {'u','d','l','r'};char dir2[4]= {'d','u','r','l'};char rr[maxn];
阅读全文
摘要:/*POJ1240Pre-Post-erous*/#include <iostream>#include <cstring>#include<cstdio>using namespace std;char pre[30],post[30];int num;int C(int n, int k) //计算组合数C(n, k){ int i, sum= 1; if (k>(n>>2)) k = n - k; for (i = 1; i <= k; ++i) sum=sum*(n - i + 1) / i; return...
阅读全文
摘要:/*dfs,剪枝是关键。╮(╯▽╰)╭本来是想一根棍子一个棍子的填充,遇到棍子不合适的就回溯。但是实验证明这绝对是剪错方向的!正确的解法是。。。先寻找第一根棍子合不合适,如果不合适就没有必要找下去了,这是关键点。这题堪称剪枝之最啊~~~~~*/#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<queue>using namespace std;#define M 100typedef long long LL;int N,a[M
阅读全文
摘要:#include<cstdio>#include<iostream>#include<cstring>using namespace std;struct tree{ char key; tree * left, * right;};char in[500],pre[500];int len;tree * plantree(char * in,char * pre,int leng) //in 表示当前中序的字符,pre表示当前前序的字符{ if(leng==0) return NULL; tree * node=new tree; node->key
阅读全文
浙公网安备 33010602011771号