/*以下为数据结构基础的知识点总结*/
①拓扑排序和环形染色法在面对环的时候的作用 uva1572 自由组合 紫书172
②bfs在路径搜索时如果条件花样多则搜索两次 uva1599 理想路径 紫书173
/*以下为暴力专题的知识点总结*/
①正向不行就逆序 BZOJ1008
②子集的枚举(例如二叉树的左子集和右子集)UVA1354天平难题、CF259div2 D(状压DP的题目)、
③dfs或者bfs的剪枝 UVA140宽带
④最短路的状态寻找问题uva1601万圣节后的早晨、10603倒水问题
⑤图的重建 UVA1601万圣节后的早晨
⑥复杂问题转换成状态问题和图论题进行bfs uva1601万圣节后的早晨、10603倒水问题
⑦数学条件中的不等式UVA10976分数拆分
⑧暴力枚举时候对先前条件的判定法 UVA129 困难的串
⑨边界问题,贪心,三角形边长 HDU5720
⑩最短路中路的转置思想 POJ3268
十一:负环不只一个的思想lightOJ1074
十二:运用dp来使用最短路 BZOJ1003
十三:剪贴板的那些情况如何用代码实现。 UVA11212 编辑剪贴
十四:如何判断字符串是两个连续的相等的字符串 UVA129 困难的串
十五: 贪心条件的判断:不能选择单位价值,而应该选择总体积相同来计算。 UVA12325 宝箱
十六: 枚举要根据条件不同来枚举,例如题目数据范围为32-bit,那么根据情况分类讨论来选择枚举策略会大大的减少枚举总量从而获得最优解 UVA 12325 宝箱、BC #84 1004、
十七:IDA*的优点:IDA*可以在中途保存路径(因此不需要链表或者并查集储存路径。然后这应该是DFS的共有的优点)、IDA*的乐观估算函数的选取应该是当前符合最终状态的条件中的最优的。 UVA1343 旋转游戏
十八:学习lrc老师的给不规则的图形进行标号建图的方式 链接 UVA1343 旋转游戏
十九:IDA*判断条件的位置不同时间可以有很大的不同 UVA1374 快速幂计算 紫书211
二十:结点排序在IDA*中算是一种贪心的想法,利用它让我们尽快的接近目标值可以节约很多时间 UVA1374 紫书211
二十一:旋转、平移、翻转操作的编写。 坐标排序的operator的一行的代码。 两个物品之间包含关系的编写。 set套set中*p的写法一定要用(*p).begin()。 如何生成连通块的作法。UVA1602 网格动物 链接
二十二:在调用某一个函数很多次的时候,用inline可以节约很多时间。例如UVA1602网格动物,节约了大约120ms。 (链接同上)
二十三:鸽巢原理的应用,一定要注意题目里面的数据量 HDU5762
二十四:如果只需要找到一条路径的话,那么就和IDA*一样直接if(dfs())这样返回就行了。如果是多条路径,那就。。。你懂得
二十五:学会dfs、bfs判环。学会通过枚举二进制来枚举情况 UVA818 切断圆环链
/*以下为dp专题的总结*/
①了解二维矩阵镶嵌和三维矩阵相镶嵌的建图 NYOJ16(二维) UVA437巴比伦塔(三维)
②时间序本身就是一个天然的序。然后最好的话就是你目前枚举的状态是当前所要转移到的目标状态。
然后一般来说,逆向枚举在dp中比较常见,当然正向也可以。 例 UVA 1025 城市里的间谍(此题为逆向)
③了解01背包问题和完全背包问题中两者转换之间的联系。01背包在i列时是完全由i-1的状态转移过来的。而完全背包问题则是还可以从目前所在的行转移过来
④回文串dp中不预处理的time是n^3,所以为了减少时间复杂度,用dfs预处理出回文串 UVA11584
⑤在dp[i][j]中,如果不需要输出路径,那么用滚动数据可以节约大量空间 并且在dp的时候最好对所有的数据进行初始化,以防止不必要的WA UVA1625
⑥
⑦
⑧
⑨
⑩
贪心法的总结:
①DAG图的边的插入(CF704div1 B)备注:也可以用dp做
②
③
④
⑤
⑥
⑦
⑧
⑨
⑩
二分法的总结:
①三角形非斜边的增长速率比斜边快,所以二分的时候lb和rb转移的时候要特别注意,例如hdu5115 http://www.cnblogs.com/heimao5027/p/5959757.html
②
③
④
⑤
⑥
⑦
⑧
⑨
⑩