随笔分类 - 数据结构
摘要:Description 吉哥又想出了一个新的完美队形游戏! 假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希望从中挑出一些人,让这些人形成一个新的队形,新的队形若满足以下三点要求,则就是新的完美队形: 1、挑出的人保持原队形的相对顺序不变,且必须...
阅读全文
摘要:Description Bob wants to hold a race to encourage people to do sports. He has got trouble in choosing the route. There are N houses and N - 1 roads in his village. Each r...
阅读全文
摘要:Description Wind loves pretty dogs very much, and she has n pet dogs. So Jiajia has to feed the dogs every day for Wind. Jiajia loves Wind, but not the dogs, so Jiajia us...
阅读全文
摘要:Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻。。。。在这样的时刻,人们却异常兴奋――我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事儿啊~~ 但网路上总有那么些网站,开始借着民众的好奇心,打着介绍日食的旗号,大肆传播病毒。小t不幸成为受害者之一
阅读全文
摘要:Description In the modern time, Search engine came into the life of everybody like Google, Baidu, etc. Wiskey also wants to bring this feature to his image retr...
阅读全文
摘要:这道题应该可以早就过的,却拖了一下午=_=,主要是我遇到了很奇怪的问题,现在还不知道原因。 那就是我一开始写的输入是: while(T--&&(scanf("%s",s+1)!=EOF)) { ...... } 一直wa,最后实在感觉没错,很无奈,照着别人的代码一个字符一个字符比对,发现改成以下格式就过了: while(T--) { scanf("%s"...
阅读全文
摘要:hdu 3336 Count the string Description It is well known that AekdyCoin is good at string problems as well as number theory problems. When given a string s, we can...
阅读全文
摘要:kmp能够实现单模板串的快速匹配。 备忘:cstring 头文件里的char* strstr 函数也是比较一个字符串是否为另一个字符串的子串,与KMP功能相同,速度究竟谁快? 经过测试,aaaaaa…….aaaab(len =1000) 去匹配 aaaaaaa…..aaab(len=1000000) strstr 函数用了将近一秒钟,而kmp算法只花了不到0.1秒的时间。除了这种极端的...
阅读全文
摘要:An array of size n ≤ 10 6 is given to you. There is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each tim...
阅读全文
摘要:Description Astronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the level of a star be an amount of the stars that are n...
阅读全文
摘要:在一面墙上贴海报,贴的顺序给出了,求最后能被看到的海报数量。 纯粹的线段树模拟题。 但数据范围给了10^7,超内存了。 实际上这里用了一个小技巧,虽然墙的宽度是很大的,但海报数量只有10000,所以这10^7个数中真正用到的数很少,这样的话就只需要把没用到的数给“删去”,剩下来的数从小到大映射为新的
阅读全文
摘要:在一个二维数组中,每次对一个矩形内所有数据进行取反操作,并实时询问某一位置的值。 一般线段树只支持对一维数据进行更新和查询,但是这题给的是二维数据啊! 这里就需要用到二维线段树了,即树套树,外层线段树的每个结点里面都有一颗线段树。 在实现二维线段树的时候,一开始用加build函数的方式,记录每个结点左右孩子的编号,但超内存了,所以直接用二维数组表示二维线段树,左右孩子编号通过计算得到:设父亲...
阅读全文
摘要:最近做到好几道关于AC自动机与状态压缩dp的结合的题,这里总结一下。 题目一般会给出m个字符串,m不超过10,然后求长度为len并且包含特定给出的字符串集合的字符串个数。 以HDU 4758为例: 把题意抽象为:给出两个字符串,且只包含两种字符 'R'、'D',现在求满足下列条件的字符串个数: 1、字符串必须包含上述两个字符串。 2、字符串长度为(m+n),其中包含n个'D',m个'R'...
阅读全文
摘要:题目大意就是要求数组中逆序数的对数,和51nod1019一样,可以用树状数组。 先对所有数进行排序,还要记录每个数原来在数组中的下标,在排好序的数组中,从小到大依次访问,假设访问到第i个数,用树状数组查询1~i-1的数中原始下标小于等于k的个数(k是第i个数的原始下标)。 同时动态更新树状数组。
阅读全文
摘要:查询区间第k大可以用划分树,而查询区间最小(最大)值可以用代码更简单的Sparse-Table(ST)算法(Tarjan发明)。 原理很简单,代码也很短: 令d(i,j)表示从i开始的,长度为2^j的一段元素最小值,那么可以用递推方法计算: d(i,j) = min( d(i,j-1) , d(i+2^(j-1) , j-1) ) void RMQ_init(const vector...
阅读全文
摘要:树状数组又叫二叉索引树 参考《训练指南》P194 动态求连续区间和,可以动态更新数据,支持以下两种操作: 1、 对某一元素进行更新操作。 2、 查询某一连续区间的元素和。 对于正整数x,我们定义lowbit(x)为“x的二进制表示中最右边的1所表示的值”,例如lowbit(11001100) =100 (这里的11001100、100都是二进制表示),在程序实现中lowbit(x) = ...
阅读全文
摘要:划分树是一种基于线段树的数据结构。主要用于快速求出(在log(n)的时间复杂度内)序列区间的第k大值。 先看下图已经建好的划分树是什么样子的,原始数组是[1,5,2,3,6,4,7,3,0,0],并把它作为树的第0层,然后把这些数中较小的数再组成[1,2,3,0,0],顺序还是遵照原数组的顺序,同样将较大的数再组成[5,6,4,7,3]。把这两个数组作为树的第二层,它们的父亲则是第一层的原始数组...
阅读全文
摘要:本文参考《训练指南》P219 、 《IOI2009 国家集训队论文by罗穗骞》 后缀数组是对文本串进行处理,而非模板串(在文本串中查找模板串),例如搜索引擎。 而AC自动机是对模板串进行预处理。两者区别。 后缀trie树:对于字符串banana,可以把它的所有后缀(banana$,anana$,nana$,ana$,na$,a$)插入一颗trie树中。这样查询起来只需要对trie树进行...
阅读全文
摘要:D. Palindrome Degree time limit per test 1 second String s of length n is called k-p...
阅读全文

浙公网安备 33010602011771号