关于c++模板的思考

1.如何使用模板提高效率?
模板应该是一类题型的通解,但是模板可能会根据题目要求的不同而做出改变,所以当遇到模板题的时候可以直接把背过的模板套上,从而达到快速解题的效果,所以我们需要了解每一种模板的应用范围以及模板中每个变量所代表的含义,了解了这些我们就可以根据题目的变化来修改我们模板中与题目有出入的地方。所以这就需要把我们一些常见题型的模板烂熟于心。

2.模板有没有分类?
模板应该是有分类的,根据算法的不同,模板也不尽相同。

3.分成几类?
从宏观上来看,我觉得应该分成两类。第一类是c++ STL自带的标准类库里的一些函数或容器,例如:vector、map、set、__gcd(),sprintf(),reverse()………;第二类是我们根据做题经验总结或者背过的代码模板,例如:快速幂模板、快排模板、kmp模板、哈希模板………

4.每类模板如何使用?
(1)c++ STL里面自带的模板:首先我们应该熟悉c++ STL库里面都有些什么容器或函数,然后最重要的是了解每个容器或函数的相关用法以及他们的特性,了解这些容器或函数在哪个头文件里面,看到问题时想一下STL库里面的容器或函数能不能帮助我们更快速的解决问题。
(2)根据做题经验总结或者背过的代码模板:虽然网上也有不少算法模板,但是我更倾向于自己写,我在总结代码模板的时候都是在多次做过一类题后写出来的,例如dfs,由于写过很多次,所以脑子里基本有了一个dfs框架,看到题目的时候脑海里会快速闪现出模板,然后按照经验敲出基本的模板结构,最后再根据题目的一些细节要求对代码模板做出润色,以求能够达到解题的目的。

一些常见算法需要掌握的模板:

基础算法:
1.快速排序
2.归并排序
3.二分
4.高精度
5.前缀和与拆分
6.双指针算法
7.位运算
8.离散化
9.区间合并

数据结构:
1.单链表
2.双链表
3.4.队列
5.单调队列
6.KMP
7.Trie
8.并查集
9.10.哈希表

搜索与图论:
1.DFS
2.BFS
3.树与图的深度优先遍历
4.树与图的广度优先遍历
5.拓扑排序
6.Dijkstra
7.bellman-ford
8.spfa
9.Floyd
10.Prim
11.Kruskal
12.染色法判定二分图
13.匈牙利算法

数论:
1.质数
2.约数
3.欧拉函数
4.快速幂
5.扩展欧几里得算法
6.中国剩余定理
7.高斯消元
8.求组合数
9.容斥原理
10.博弈论

动态规划:
1.背包问题
2.线性DP
3.区间DP
4.计数类DP
5.数位统计DP
6.状态压缩DP
7.树形DP
8.记忆化搜索

贪心:
1.区间问题
2.Huffman树
3.排序不等式
4.绝对值不等式
5.推公式
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值