
数据结构
文章平均质量分 78
dr5459
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
UVA11995----数据结构水题
题目地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3146 这个题目的意思很简单,给你一些push和pop操作,然后根据操作的结果来猜数据结构。 就三种, stack queue priority queue 正好用STL就可以模拟。原创 2013-04-22 17:19:28 · 821 阅读 · 0 评论 -
HDU3486----Interviewe----二分+一维RMQ
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3486 题目意思: 给定n个数的序列,让我们找前面k个区间的最大值之和,每个区间长度为n/k,如果有剩余的区间长度不足n/k则无视之。 现在让我们找最小的k使得和严格大于m。n 解题思路: 用二分枚举k,然后用RMQ来查询区间内的最大值,即可 代码: #include #include原创 2013-08-12 22:58:09 · 1109 阅读 · 0 评论 -
HDU3613-----Best Reward-----用扩展KMP来判断某个串是不是回文串
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3613 题目意思: 给你一个字符串S,然后会告诉你每种字母的值 让你把S分成两个子串,若子串是回文串,则价值等于字母价值之和,不然为0 问你最大价值 解题思路: 枚举分开的点,然后对前后两个子串进行判断是否是回文串,然后算出值,求出最大值即可 比较难搞的就是怎么判断回文串,如果用暴力的话就原创 2013-08-10 20:37:28 · 1186 阅读 · 0 评论 -
POJ3162------无向图不带环最长路加线段树(树上DP)
题目地址: http://poj.org/problem?id=3162 题目意思: 有N个点,分贝是1~N,然后要你求出每个点在这个图上的最长路 然后找一个连续的子序列,使得这个序列的最大值和最小值之差小于等于M,求最长的子序列的长度 解题思路: 首先是求最长路,这个和HDU的COMPUTER简直就是一模一样 但是要注意,因为这个数据量很大, 所以不建议使用STL,我用的是指针原创 2013-07-04 23:44:04 · 1436 阅读 · 0 评论 -
HDU3630----最大子矩阵+二维RMQ
地址:http://acm.hdu.edu.cn/showproblem.php?pid=3630 题目意思: 给你一个矩阵N*M 有Q次查询,然后问你一个子矩阵里面的最大收益 收益的算法是:这个子矩阵里面找一个不含-1的矩阵,然后求他的和,其中可以选一个点,是其值变为S倍,显然,选最大的最好 解题思路: 这个题分两步: 先求最大子矩阵,然后用二维RMQ求出最大值就OK,其中求和可以原创 2013-07-03 23:57:27 · 1191 阅读 · 0 评论 -
ZOJ2859-----二维的RMQ
题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2859 题目意思: 给你一个矩阵,求出子矩阵中的最小元素 解题思路: 之前用二维的线段树做过,但是查询时间是O(logn*logn) 现在用二维RMQ的话,可以把查询时间做到O(1) 它的预处理时间是O(n*n*logn*logn) 代码: #inc原创 2013-06-26 00:04:33 · 833 阅读 · 0 评论 -
HDU3336------KMP+DP
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3336 题目意思: 给你一个字符串,要求求出所求的前缀在字符串一共出现了多少次 解题思路: KMP+DP 我们令dp[i]表示以s[i]结尾的字符串中出现了几个以s[i]结尾的前缀 那么对于每个i而言,我们就是找出在1~i-1里面的和s[i]相匹配的前缀j 得到dp[i]=dp[j]+1(原创 2013-06-20 11:03:17 · 853 阅读 · 0 评论 -
POJ3261----后缀数组
题意:http://poj.org/problem?id=3261 题目意思: 给你一个序列,要你求出一个最长的重复序列的长度且这个序列在母序列中至少重复了k次 这个重复序列是可以重叠的 解题思路: 二分答案,然后将后缀分成若干组。不 同的是,这里要判断的是有没有一个组的后缀个数不小于k。如果有,那么存在 k 个相同的子串满足条件,否则不存在。这个做法的时间复杂度为O(nlogn)。原创 2013-06-07 20:47:07 · 721 阅读 · 0 评论 -
POJ1743-----后缀数组+二分(男人八题之一)
题目地址:http://poj.org/problem?id=1743 题目意思: 给你n个音符,每个音符到另外一个音符,会有一个转换值,即差值,形成一个串。 让你找出里面最长的重复串(至少重复2次),且不相互覆盖 要求,如果组成这些串的音符要>=5,即音乐差值组成的串要大于等于4 否则输出0 解题思路: 先二分答案,把题目变成判定性问题:判断是否 存在两个长度为k 的子串是相同的原创 2013-06-07 19:50:59 · 929 阅读 · 0 评论 -
SPOJ694----后缀数组
题目地址:http://www.spoj.com/problems/DISUBSTR/ 题目意思: 给你一个字符串,要你去除他的不同的子串的数量 解题思路: 每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相 同的前缀的个数。如果所有的后缀按照suffix(sa[1]), suffix(sa[2]), suffix(sa[3]), …… ,suffix(sa[n])的顺原创 2013-06-07 21:27:46 · 1049 阅读 · 0 评论 -
URAL1297------后缀数组
题目地址:http://acm.timus.ru/problem.aspx?space=1&num=1297 题目意思:给你一个字符串,要你求出最长的回文子串 解题思路: 把原串的反串加个原串后面,中间加个没有出现过的字符 然后,原串中,下标i在反串中对应的位置为2*l-i 如果求以i为对称轴的回文串,我们求suffix(i)和suffix(2*l-i)的LCP 如果求以i和i+1为对原创 2013-06-09 22:22:13 · 924 阅读 · 0 评论 -
HDU2243-----AC自动机+矩阵乘法+矩阵公式
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2243 题目意思: 给你n个字符串,然后给你一个长度L 问你在长度不超过L的所有字符串中(a~z)有多少个至少含有一个子串 意思很明确了,下面说解法,这题和POJ2778很类似,详见:http://blog.youkuaiyun.com/dr5459/article/details/8971626原创 2013-05-27 22:47:05 · 1049 阅读 · 0 评论 -
POJ2778----AC自动机的变形+矩阵快速幂(AC自动机和矩阵快速幂必做题)
题目地址:http://poj.org/problem?id=2778 题目意思: 给你M个DNA的小序列 然后要你求出长度为N但是不含给出的M个小DNA的情况有多少种 这是一道很好的题目 对算法的要求很高,具体的思路我是在:http://blog.youkuaiyun.com/morgan_xww/article/details/7834801学来的,所以可以移步去看原创 我主要说说几个要注意的原创 2013-05-24 20:24:56 · 1132 阅读 · 0 评论 -
ZOJ3430----AC自动机加模拟(巨坑,心里素质不好的人别做)
题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4114 题目的意思: 给你一个加密的字符串,让你用二进制表示,每六位一个字符 然后再用8位二进制表示一个明文的字符,这是翻译的过程。 给你一些病毒的暗文,再给你一些长的字符串的暗文 问你每个长字符串暗文中出现了几种病毒,看清楚,是几种,不是几个。我为此WA了一原创 2013-05-21 18:27:29 · 927 阅读 · 0 评论 -
HDU3065----AC自动机的初级阶段
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3065 题目意思: 给你n个子串,问你在一个大的字符串里面每个子串出现了多少次 裸的AC自动机 就是统计那里稍作改动 对于每一个子串的结尾的val[u]=v 这个v就是第几个的意思,便于后面统计 然后加入统计函数 void tongji(int j) { if(j)原创 2013-05-20 20:11:07 · 789 阅读 · 0 评论 -
UVA11992----线段树的成段更新
题目地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=501&page=show_problem&problem=3143 这个题目的意思是 有一个矩阵,给你三个操作 分别是给一个子矩阵加一个值 或者将一个子矩阵的每个元素赋成一个值 再就是查询一个子矩阵的所有元素的和,最大值,原创 2013-05-02 23:06:18 · 858 阅读 · 0 评论 -
WHU1478----2014年武大邀请赛H题----双向链表
题目地址:http://acm.whu.edu.cn/land/problem/detail?problem_id=1478 这个题目的意思很简单,提供几种操作 光标左移,右移 插入一个字母 删除一个字母 这个完全可以利用双向链表来模拟,左移就将指针左移,右移同理 建立一个空头的双向链表,每当要插入的时候在当前光标的后面插入 如果需要删除的话,就将当前光标的内容删除,并将pos往前移原创 2013-04-21 22:01:25 · 877 阅读 · 0 评论 -
HDU1711-----Number Sequence-----裸的KMP
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1711 题目意思: 找出b在a中的起始位置,没有则是-1 解题思路: 裸的KMP,不多说 不会KMP的话可以去看http://www.cppblog.com/oosky/archive/2006/07/06/9486.html 说的非常好 模板我是拿的大白的 代码: #include原创 2013-08-13 23:10:19 · 991 阅读 · 0 评论