ACM专题
oliver233
天道酬勤
展开
-
RMQ(区间最值问题)ST算法
RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。 最先想到的是线性扫描,时间复杂度为O(n)-O(qn),即建立+扫描时间,但是针对于查询次数的数据量较大时,引入ST算法 ST(实质是动态规划),O(nlogn)-原创 2017-04-12 10:45:55 · 922 阅读 · 0 评论 -
KMP模式串匹配模板
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹配信息。时间复杂度O(m+n)。BF算法是一种很好理解的字符串匹原创 2017-04-21 20:29:45 · 410 阅读 · 0 评论 -
hdu2594(KMP算法水题)
Simpsons’ Hidden TalentsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8854 Accepted Submission(s): 3085Problem DescriptionHomer原创 2017-04-21 20:32:04 · 381 阅读 · 0 评论 -
hdu3746(KMP next数组使用)
Cyclic NacklaceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8525 Accepted Submission(s): 3668Problem DescriptionCC always beco原创 2017-04-21 20:36:29 · 325 阅读 · 0 评论 -
Poj2503 map映射使用
BabelfishTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 43624 Accepted: 18404DescriptionYou have just moved from Waterloo to a big city. The people here原创 2017-05-04 16:56:26 · 345 阅读 · 0 评论 -
poj2418 Map统计单词数
Hardwood SpeciesTime Limit: 10000MS Memory Limit: 65536KTotal Submissions: 24723 Accepted: 9549DescriptionHardwoods are the botanical group of trees that have broad原创 2017-05-04 16:58:37 · 321 阅读 · 0 评论 -
AC自动机(hdu2222)
AC自动机Aho-Corasick automaton,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法。要学会AC自动机,我们必须知道什么是Trie,也就是字典树。Trie树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。AC自动机其实是Trie树和KMP算法原创 2017-04-22 21:48:38 · 309 阅读 · 0 评论 -
2017年省赛前最后一水---K题
问题 K: Grid 时间限制: 1 Sec 内存限制: 128 MB 提交: 322 解决: 40 [提交][状态][讨论版] 题目描述 Pong is wandering in the grids, and we take his initial position as (0,0). Each step he can move in the 4 directions of UP,原创 2017-05-05 11:24:10 · 604 阅读 · 0 评论 -
2017年省赛前最后一水---C题
问题 C: a*b%c 时间限制: 1 Sec 内存限制: 128 MB 提交: 248 解决: 58 [提交][状态][讨论版] 题目描述 Lucy give you three number a,b,c. You should tell Lucy the answer of a*b%c 输入 The first line of the input gives the numb原创 2017-05-05 11:27:32 · 410 阅读 · 0 评论 -
2017年省赛前最后一水---A题
问题 A: String 时间限制: 1 Sec 内存限制: 128 MB 提交: 118 解决: 78 [提交][状态][讨论版] 题目描述 Lucy give you a string s(s1s2s3…sn) . If(s1s2s3…sn)=(snsn-1sn-2…s1) ,you tell Lucy YES,otherwise ,you tell Lucy NO. For原创 2017-05-05 11:29:10 · 508 阅读 · 0 评论 -
2017年省赛前最后一水---B题
问题 B: Prime 时间限制: 1 Sec 内存限制: 128 MB 提交: 166 解决: 78 [提交][状态][讨论版] 题目描述 Lucy give you a number n. You should tell her the maximum prime no more than n. 输入 The first line of the input gives the原创 2017-05-05 11:31:00 · 415 阅读 · 0 评论 -
ZOJ3878(Convert QWERTY to Dvorak)
Convert QWERTY to DvorakTime Limit: 2 Seconds Memory Limit: 65536 KB Edward, a poor copy typist, is a user of the Dvorak Layout.But now he has only a QWERTY Keyboard with a brokenCaps L原创 2017-04-24 11:35:31 · 303 阅读 · 1 评论 -
hdu1896 Stones 优先队列使用
StonesTime Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 2672 Accepted Submission(s): 1710Problem DescriptionBecause of the wrong st原创 2017-04-20 11:39:04 · 501 阅读 · 0 评论 -
后缀数组详解以及其用法,常用解决的问题类型
转自:http://www.cppblog.com/superKiki/archive/2010/05/15/115421.html【摘要】 后缀数组是处理字符串的有力工具。后缀数组是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现,能够实现后缀树的很多功能而时间复杂度也并不逊色,而且它比后缀树所占用的内存空间小很多。可以说,在信息学竞赛中后缀数组比后缀树转载 2017-05-02 11:23:15 · 1580 阅读 · 0 评论 -
线段树求解区间值问题
线段树: 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,因此有时需要离散化让空间压缩。 上一篇博客求解RMQ问题,查询区间最值,活某种特定的值,是利用动态规划的思想,先预处理,将各个区间的最值存进数组中,再利用O(原创 2017-04-12 20:08:46 · 505 阅读 · 0 评论 -
STL 之sort函数结构体排序
当借助结构体来存储某一特定元素时,可能会遇到结构体排序问题,指定结构体中某一元素,或者某几个元素的运算数值当作排序规则 可以直接借助C++里STL中的快排函数sort(a,a+b,cmp) sort的普通排序方式为 不指定cmp函数规则时,int型数组默认按照大小升序排序,char型数组按照ASCII码值进行排序。 指定cmp函数之后可以规定排序规则。#include<stdio.h>#i原创 2017-04-17 19:45:15 · 3099 阅读 · 0 评论 -
STL库之Map结构的使用
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。Map原创 2017-04-17 21:09:28 · 542 阅读 · 0 评论 -
并查集(模板&典型例题整理)
并查集,并查集是一种树形结构,又叫“不相交集合”,保持了一组不相交的动态集合,每个集合通过一个代表来识别,代表即集合中的某个成员,通常选择根做这个代表。 也就是说,并查集是用来处理不相交集合类型问题,如问不相交集合有几个。给定节点,找到该节点所在集合元素个数,当然这只是水题。并查集会与其他算法结合着考,如LCA中的tarjian算法。后续博客会整理。 并查集,顾名思义,主要分三部分。 一:合并原创 2017-04-13 21:15:05 · 11738 阅读 · 0 评论 -
STL中set结构的使用
set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值;另外,还得保证根节点左子树的高度与右子树高度相等。平衡二叉检索树使用中序遍历算法,检索效率高于vector、deque和list等容器,另外使用中序遍历可将键值按照从小到大遍历出来。构造set集合原创 2017-04-18 18:01:23 · 398 阅读 · 0 评论 -
ACM常用数论之欧拉函数
数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)。此函数以其首名研究者欧拉命名(Euler’so totient function),它又称为Euler’s totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。 从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明。 欧拉函数公式:euler(x) =原创 2017-04-29 21:36:01 · 2446 阅读 · 0 评论 -
STL库之queue队列使用
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入原创 2017-04-18 20:23:01 · 776 阅读 · 0 评论 -
字典树(Tire树)模板+例题
又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 将给定的字符串建立为空根数,然后在节点中做相应记录,如到当前前缀串为止的子串。 上面的数就是由字符串 abcd,abd,bc原创 2017-04-14 21:10:18 · 2416 阅读 · 0 评论 -
ACM中字符串题常用算法
转自http://blog.csdn.net/ck_boss/article/details/47066727ACM中常用算法—-字符串ACM中常用的字符串算法不多,主要有以下几种:Hash字典树KMPAC自动机manacher后缀数组EX_KMPSAM(后缀自动机)回文串自动机下面来分别介绍一下:0. Hash字符串的hash是最简单也最常用的算法,通过某种has转载 2017-05-01 20:45:36 · 4876 阅读 · 0 评论 -
STL库之优先队列(例hdu1873)
优先队列优先队列(priority queue)普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。在STL中,已经给出了队列这一数据结构,那么,我们就要对压入队列中的数据进行一个优先级的判断。接下来原创 2017-04-19 20:05:39 · 326 阅读 · 0 评论 -
STL之栈结构 例题hdu1702
栈(计算机术语)栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。学过数据结构的话,栈这一原创 2017-04-19 20:43:50 · 462 阅读 · 0 评论 -
hdu1242优先队列+BFS
RescueTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 29901 Accepted Submission(s): 10531Problem DescriptionAngel was caught by t原创 2017-04-25 21:05:03 · 339 阅读 · 0 评论