记算法思维
Posted happy-medge
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记算法思维相关的知识,希望对你有一定的参考价值。
目的
其实就是想总结一下自己做题中用到的思考方式,虽然我知道即使写了也没用??(还是要靠多多刷题)。本文纯粹瞎写。
正文
模拟思维:
模拟思维是最常见的做题方式:按照题意和样例的操作,一步步模拟过程,从中理解到问题的本质。一般看不懂题目也需要进行合理的模拟进行突破,或者直接通过模拟得出答案。
暴力思维:
暴力思维就是对于数据量小的题目,可以枚举所有状态来得到答案。涉及到的知识:dfs,状压dp。
排序思维:
排序思维就是对于题目给出的数据,经过一定的排序后,可以在复杂度较低内解决题目的问题。而且,很多题目都是要先排序后才能对数据进行处理。涉及到的知识:c++ stl sort,莫队。
贪心思维:
贪心,是在每一步选择中采取优先策略,从而得到答案的思维。前提是:要保证每一步采取这个优先策略肯定是得到正确的最优解。涉及到的知识:dijkstra算法,最小生成树。
分解思维:
分解,一般是对于复杂的问题,可以分解成小问题(子问题),然后从这些子问题来推出最终问题的答案。涉及到的知识有:动态规划,分治,分块。
优化思维:
优化思维一般是碰到直接做题目复杂度高的情况,这时需要进行时间的优化。当然排序是最简单的优化,除此之外,还有利用前缀和,数据结构的优化。涉及到的数据结构:栈(包括单调栈),队列(包括单调队列),堆(或者优先队列),线段树(简单形式:树状数组),并查集。
想说的话
其实上面的思维都是基础的东西,关键还是要自己多学相关算法和多做相关题目,才能得到实际的提高(不过,对于新人(以前没参加过算法竞赛)来说我觉得上面是必须要了解的思维,不然做题效率很慢??)
暂更???
以上是关于记算法思维的主要内容,如果未能解决你的问题,请参考以下文章