数据结构
zealscott
https://tech.zealscott.com
展开
-
KMP算法详解(C++实现)
在数据结构课上老师讲了kmp算法,但当时并没太懂,现在把思路重新理一遍。1.kmp算法简介KMP是三位大牛:D.E.Knuth、J.H.Morris和V.R.Pratt同时发现的。 KMP算法其实就是一种改进的字符串匹配算法,关键是利用匹配后失败的信息,尽量减少模式串(W)与主串(T)的匹配次数以达到快速匹配的目的。具体实现就是实现一个next() 函数,函数本身包含了模式串的局部匹配信原创 2018-01-30 22:51:40 · 25924 阅读 · 12 评论 -
UVa11300分金币-中位数方法
题目链接:点击这里 此题刚开始做时没有什么思路,也不知道这么下手,但不可能穷举。由于对于任意一个人xixix_i,只可能向xi−1xi−1x_{i-1}或者xi+1xi+1x_{i+1}分金币,因此定义xixix_i为编号为iii的人向编号为i−1i−1i-1的人给多少金币,如果xi<0xi<0x_ii−1i−1i-1的人向编号为iii的人−xi−xi-x_i个金币。 现假设...原创 2018-02-08 22:35:13 · 556 阅读 · 0 评论 -
UVa112992-贪心算法
题目链接:点击这里 此题可用简单的贪心算法,因为要找能砍掉某个头的能力值最小的骑士,可以先排序,再对每个头进行选择,选择能砍它的最小骑士,则为答案。 算法复杂度为MAX[ O(mlgm),O(nlgn) ]。 C++代码如下:#include #include using namespace std;int man[20000];int head[20000];int原创 2018-02-06 22:17:05 · 341 阅读 · 0 评论 -
UVa112992-贪心算法
题目链接:点击这里 此题可用简单的贪心算法,具体可见CLRS中的贪心算法介绍。 可使用Exchange策略进行证明:当对执行任务进行递减排序并且依次执行时,可以达到最优解。 解题的基本思路:首先利用结构体存储每个部下的交代任务和执行任务的时间,然后进行操作符重载,使得可以直接使用内置sort函数进行排序,然后就能很愉快的AC了。 注意:进行操作符重载时只能重载<号。 问题:书...原创 2018-02-08 11:40:56 · 203 阅读 · 0 评论