摘要:
DP关键也是难点在于如下几个地方 状态定义,需要满足无后效性以及最有子结构 状态的转移需要合理的定义以及简化 关于边界条件需要讨论好,满足递归过程中的循环不变式是一回事,但是边界条件中的基本式也需要满足 这么一道很简单的题,前面想复杂(状态想出来但是不知道怎么和所求最优解联系)再到后面因为初始化没考 阅读全文
摘要:
一开始的思路错误了,想着利用贪心策略自然的转到了dijkstra或Prim。 因为想要学习堆优化所以想去借鉴kuangbin大佬模板,结果看到思路的一道解析才知道自己多粗浅,若是起初选择贪心的策略,对于后续距离优化你是看不出积累优势的,反而可能因为你起初贪心了几步,导致离最终的目的地跑远乃至于后期不 阅读全文
摘要:
本来很简单一道题 开始想复杂了,最初想法其实就是顺畅的DP思路,但是以往做的DP,都是DP的终点就是我们所求的最优解。所以一开始没了思路,等看到Kuangbin大神的代码,就看他简述的思路就知道自己最初的思路是正确的。教训有两个吧,一个是僵硬的求“正确的”做法,一个是没有培养自己分析时间复杂度的习惯 阅读全文
摘要:
最近为了准备那个关于图算法的项目,一直看算法导论看的晕乎,还是尧师父说的在理,上手写代码才能发现问题有助于水平提高 这道题是一道DP,原本不太好想,不过题目限定老鼠奔跑只能从奶酪数低的往奶酪数高的洞跑,这样就可以定义出一个无后效性的状态,即,从(i,j)节点开始跑最多可以得到多少。 #include 阅读全文
摘要:
KMP算法的应用,第一遍做想的有点复杂,想开一个hash数组维护,实践时候才发现兜兜转转一圈徒增代码复杂度,最后时空复杂度也上来了。好的算法一个很重要的特性就是可编写性。 #include <iostream> #include <algorithm> #include <queue> #inclu 阅读全文
摘要:
关于read函数使用有一些不太能理解的问题出现,在我读完之后选择以一个字符一个字符输出(上限利用read返回值)这种方式得出的结果是和输入一致的,但是直接Printf,可以发现我的字符数组不知道被谁动了,而且恰好是最后一句的重复,倘若结尾多加一个换行符还会有奇怪现象出现。 回到这道题本身,就是简单的 阅读全文
摘要:
杭电上关于manacher一道应用,做完POJ的,顺手过了这道题 #include <iostream> #include <algorithm> #include <queue> #include <string> #include <vector> #include <stack> #inclu 阅读全文
摘要:
字符串中关于回文串处理,非常经典的Manacher算法 关键思想在于,我们使用中心扩展的时候,这种回文的轴对称其实已经为我们提供了一些关于当前正在讨论的对称轴的信息。当前我们正在讨论的对称轴如果恰好位于我们保存的一个全局回文串中,我们可以利用镜像对称(当前对称轴关于全局回文串中心的对称点)帮助我们获 阅读全文
摘要:
也许是不甘心深藏的梦想,也许是痛恨自己的懦弱。 不管怎么样,接下来请笃定认真走下去吧 本题利用暴力也是可以做的,不过是在练习KMP的思路,所以,还是利用了KMP进行优化。 中间出过一个很久的bug,原来是初始化没有做好,还是编程习惯的问题吧。 #include <iostream> #include 阅读全文
摘要:
KMP中的next起到了至关重要的作用,在本题中,就是对于KMP这一核心构件的理解 说穿了,KMP中next数组一个很巧妙的地方在于不要在同一个地方跌倒两次 但是对于这道题,如果直接使用next是不符合提议的,单纯使用next会导致我们丢失一部分解(测试样例里面的aaaaa就是个好例子),因此,对于 阅读全文