2012年9月12日
摘要: 大意:给定你一些商品的信息save(字符串),然后输入需要查询的字符串str,如果存在一个字符串save使得str是save的子串。思路:字典树的变形,如存在"abcd",则"bcd", "cd", "d",都需要插入字典树中。如果存在"abab"的话,有可能"ab"会重复计数,所以需要一个特定的序列号来区分是否是同一序列中的子串。我们可以定义一个value,若value相同,则跳过,若不同,则+1后更新value。例如:假设总共有4个商品信息5 5 5 5a b a b 5 阅读全文
posted @ 2012-09-12 21:54 有间博客 阅读(556) 评论(0) 推荐(0) 编辑
摘要: 大意:给你一段单词,若给定的单词中有一个是另外两个单词合并而成的话,则输出。思路:Trie+枚举,每输入一个单词,插入进Trie中,然后枚举它所有的前缀数,然后通过函数strncpy函数确定剩余的字母组成的单词,然后通过Trie的基本查找来确定是否包含两个单词。CODE:#include<iostream>#include<cstring>#include<cstdio>usingnamespacestd;structTrie{Trie*next[26];intvalue;Trie(){for(inti=0;i<26;i++)next[i]=0;val 阅读全文
posted @ 2012-09-12 19:10 有间博客 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 大意:给你一些木筷子,让你去加工,如果后一个的长度,重量都比前一个的大的话,不需要调试的时间,否则调试的时间+1,求最小的调试时间。思路:跟最小拦截系统有点相像。解题思路:对木棍的长度和重量进行排序,以长度为首要考虑。排序完后的不一定都是下一根木棍重量和长度都大于前一根的。于是,我们对排序后的数组进行多次扫描,将可以在一次建立时间内完成的进行标记,知道木棍全部标记(设置一个外部变量来计数已扫描的元素的数量)。例子:54 9 5 22 1 3 5 1 4排序完后:1 4 2 13 54 95 2然后进行第一次扫描:使用mark[]数组进行标记,mark[]初始化为0,红色为第一次描过的。Stik 阅读全文
posted @ 2012-09-12 11:20 有间博客 阅读(232) 评论(0) 推荐(0) 编辑