随笔分类 - 数据结构
UVa 210 Concurrency Simulator (双端队列+模拟)
摘要:题意:给定n个程序,每种程序有五种操作,分别为 var = constant(赋值),print var (打印), lock, unlock,end。 变量用小写字母表示,初始化为0,为程序所公有(一个程序里对某个变量修改可以会影响其他程序里的这个变量), 常数小于100(也就是说最多两位数)。
阅读全文
LA 4670 Dominating Patterns (AC自动机)
摘要:题意:给定n个字符串和一个文本串,查找哪个字符串出现的次数的最多。 析:一匹配多,很明显是AC自动机。只需要对原来的进行修改一下,就可以得到这个题的答案, 计算过程中,要更新次数,并且要映射字符串。如果用KMP肯定会超时。 代码如下:
阅读全文
HDU 1285 确定比赛名次(拓扑排序)
摘要:题意:你懂得。。。 析:先说一下什么是拓扑排序,就比如这个题,是u赢了v,把“赢了”关系看成是一条有向边,那么就得到了个有向图。 那么这个题就转化成了,把一个图的所有结点排序,使得每一条有向边(u,v)对应的u都排在v前面。并且字典序最小。 这样的问题,就称为拓扑排序。 首先先构造出一个图来,考虑每
阅读全文
UVa 11732 "strcmp()" Anyone? (左儿子右兄弟前缀树Trie)
摘要:题意:给定strcmp函数,输入n个字符串,让你用给定的strcmp函数判断字符比较了多少次。 析:题意不理解的可以阅读原题https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&
阅读全文
LA 3026 && POJ 1961 Period (KMP算法)
摘要:题意:给定一个长度为n字符串s,求它每个前缀的最短循环节。也就是对于每个i(2<=i<=n),求一个最大整数k>1(如果存在),使得s的前i个字符组成的前缀是某个字符串重复得k次得到的。输出所有的的k和i。 析:首先这是一个KMP的一个题(据大神们说这是一个水题。。。),首先要对KMP有了解,如果没
阅读全文
UVa 11992 Fast Matrix Operations (线段树,区间修改)
摘要:题意:给出一个row*col的全0矩阵,有三种操作 1 x1 y1 x2 y2 v:将x1 <= row <= x2, y1 <= col <= y2里面的点全部增加v; 2 x1 y1 x2 y2 v:将x1 <= row <= x2, y1 <= col <= y2里面的点全部变成v; 3 x1
阅读全文
LA 3942 && UVa 1401 Remember the Word (Trie + DP)
摘要:题意:给你一个由s个不同单词组成的字典和一个长字符串L,让你把这个长字符串分解成若干个单词连接(单词是可以重复使用的),求有多少种。(算法入门训练指南-P209) 析:我个去,一看这不是一个DP吗?刚开始交一直是runtime error,找了好久,一直以为是数组开小了,不断增大还是这样,后来发现我
阅读全文
LA 4329 Ping pong (树状数组)
摘要:题意:从左到右给你n个不同的数值,让你找出三个数值满足中间的数值在两边的数值之间的个数。 析:题意还是比较好理解的,关键是怎么求数量,首先我们分解一下只有两种情况,一个是左边<中间<右边,另一种是左边>中间>右边(因为数值都不相同嘛)。 我们考虑第i个数值在中间的情况。假设a1到ai-1中有ci个比
阅读全文