题目描述Trie 图就是在 Trie 树上建立 fail 指针,类似于KMP算法中的next数组的作用。这个数据结构的作用是判断一个字符串中是否包含一组字符串中的任意一个。结构体定义是这样的:typedef struct trie_node { trie_node *nodes[26]; trie_...
分类:
其他好文 时间:
2015-04-24 20:44:14
阅读次数:
120
题目描述暴力解法:枚举原串起始位置,逐个匹配,复杂度O(mn)。优化思路:失配时,前面已匹配的字符可以提供信息。KMP算法:对于模式串任意位置 i ,如果我们知道一个 k 使得 i 位置前的 k 个元素和模式串最开始的前 k 个元素一一相等,那么第 i 个元素失配时就可以之间从第 k + 1 个元素...
分类:
编程语言 时间:
2015-04-21 20:35:55
阅读次数:
100
思路:完全看题目中的介绍就行了。还有里面的input写道:不保证是英文单词,也有可能是火星文单词哦。比赛结束后的提交是不用考虑26个字母之外的,都会AC,如果考虑128种可能的话,爆了内存。步骤就是,在插单词的同时记录该结点之后的单词数,查词就查最后一个字母所在结点上的单词数。 1 #include...
分类:
其他好文 时间:
2015-04-21 00:14:44
阅读次数:
244
思路:(1)暴力穷举。O(n^3) -----绝对不行。 穷举所有可能的出现子串O(n^2),再判断是否回文O(n)。就是O(n*n*n)了。(2)记录位置。O(n^3) -----绝对不行。 先扫一遍,记录每个字符在上一次出现的位置pos。每次考虑第i个字符,如果回文子串包括 i 的话...
分类:
其他好文 时间:
2015-04-20 22:21:21
阅读次数:
222
题目3 : 基站选址
时间限制:2000ms
单点时限:1000ms
内存限制:256MB
描述
需要在一个N × M的网格中建立一个通讯基站,通讯基站仅必须建立在格点上。
网格中有A个用户,每个用户的通讯代价是用户到基站欧几里得距离的平方。
网格中还有B个通讯公司,维护基站的代价是基站到最近的一个通讯公司的路程(路程定义为曼哈顿距离)。
在...
分类:
其他好文 时间:
2015-04-20 21:02:48
阅读次数:
169
题目描述 Trie树概念相对简单。 如果是用于保存英文词典,时空效率都是不错的。 如果保存中文词典,对子节点的索引可能需要用一个哈希表来存。 在建树的过程中可以顺便统计特定前缀的单词数。 如果要求重复单词不重复统计,可以在插入前先查询一次。 本题的具体代码如下:#include #include #...
分类:
其他好文 时间:
2015-04-20 20:34:46
阅读次数:
137
题目1 : 2月29日
时间限制:2000ms
单点时限:1000ms
内存限制:256MB
描述
给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期)。
只有闰年有2月29日,满足以下一个条件的年份为闰年:
1. 年份能被4整除但不能被100整除
2. 年份能被400整除
输入
第一行为一个整数T,表示数据组数。
之...
分类:
其他好文 时间:
2015-04-20 17:01:11
阅读次数:
189
题目2 : 回文字符序列
时间限制:2000ms
单点时限:1000ms
内存限制:256MB
描述
给定字符串,求它的回文子序列个数。回文子序列反转字符顺序后仍然与原序列相同。例如字符串aba中,回文子序列为"a", "a", "aa", "b", "aba",共5个。内容相同位置不同的子序列算不同的子序列。
输入
第一行一个整数T,表示...
分类:
其他好文 时间:
2015-04-20 17:00:51
阅读次数:
87
思路:树上的动态规划。只能刷部分节点数m,总节点数n。如果m>=n那么就可以全刷了,那就不用任何算法了。如果m 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int N2=110; //平方 8 con...
分类:
其他好文 时间:
2015-04-20 14:27:58
阅读次数:
83
题目描述- 基础方法:枚举子串,判断是否为回文串。- 改进:枚举中间位置,向两侧拓展。- 再改进:利用以前的信息,使得不用每个新位置都从长度1开始拓展。- 优化:将字符串预处理为奇数长度以避免考虑条件分支。- 再优化:开头加入特殊字符避免考虑边界。Manacher 算法:id 是中心点,mx 是其边...
分类:
编程语言 时间:
2015-04-20 00:06:11
阅读次数:
174