总结
本周新学习内容
1.图论的托兰定理,数列不完全归纳
2.图轮的最短路径算法之Floyd和Dijkstra算法
3.数论相关(结论性内容),三分法(模板)
4.并查集应用
本周刷题情况
Codeforces 共4题
洛谷:本周累计通过:黄题16个 绿题2个
主刷算法:搜索+图论,动态规划
未完成目标:黄题4个,Codeforces未参赛一场
小结
普及/提高-难度的搜索题做了不少,已经没有问题了,这次两个绿题一个搜索的,一个动态规划
做题的时候尤其是深搜,让我长进比较多,主要在于回溯上怎么写,和回溯到底是什么,
搜索上来讲
1.广搜一般就是模板了,没什么好讲的,注意怎么设计的更合理就好
2.深搜,先通过问题的描述去走,看看每一步的走法,设计出一个递归,可以通过语言描述(比如:先走这一步,这一步走完了如果xx那么就走下一步,否则就剪枝),设计完了递归再具体分析程序再执行的过程中需要的进一步的回溯方法,标记方法,剪枝方法,状态判断等。
动态规划现在我做题的套路主要有
1.先画出具体的初始状态,然后继续往下推下面的状态,直接观察状态之间的关系,然后找出dp表达式
2.通过列矩阵来找出表达式,这个比较适合类似于LCS这种字符串的DP题,这周做了一道叫基因的题就是这种方法做出来的
关于涉足绿题的感想
广搜的这道,思想是广搜模板+二分+小技巧
绿题这个级别已经不是能靠单一的算法就解决的了,广搜虽然是模板,但是设计起来也有难度,题目给的条件很清晰,很明白,在于怎么写条件之间的关系,再就是搜索的范围,可以用二分去优化
动态规划这个:可以说是超级一个普及-的高级衍生版本,不同的是这个题涉及两次路径的选取,如果用DFS可能会爆炸而且必然会超时,只能设计DP,但是这并非二维DP的范围了,两次从矩阵中寻找路径是用到了四维DP,,
应该注意的小细节:
1.现成的函数普遍会慢,比如max,memset
2.再Debug的时候注意if()后面有没有跟一个分号(我找了四十分钟,,,)
3.开longlong
下周目标:黄题还是定下20道,绿题3个,Codefores尽量打,刷题主要方向还是搜索,顺带动态规划
有的时候算法题会做的比较累,可以去玩玩div3的思维题。