acm学习

要学习的


  基本结构 高级结构 题单
集合结构  


幷查集


POJ 1182

POJ 1308

POJ 1611

POJ 1986

POJ 1988

线性结构 数组

队列

双端队列

POJ

POJ

POJ

POJ

POJ

树状结构

二叉树

BST

AVL树

splay树(伸展树)

Treap

Cartesian Tree

Size Balance Tree

POJ 3580(splay tree)

POJ 2761(Treap)

POJ 2201(Cartesian Tree)

POJ 3481(SBT)

图形结构

邻接矩

阵邻接表

十字链表

邻接多重表

 

POJ

POJ

POJ

POJ

POJ

堆型结构 二叉堆

左偏堆

斜堆

POJ 3016(可合并堆)

POJ 3666(可合并堆)

POJ

POJ

POJ

数学结构  


散列表(Hash表)


POJ 3349

POJ 2002

POJ

统计结构  

树状数组

线段树

POJ 2482(线段树)

POJ 1151(线段树)

POJ 2155(二维树状数组)

POJ

POJ

字符结构  

前缀树

后缀树

后缀数组


POJ 1743

POJ 2744

POJ 2758

POJ 1056(Trie树)

POJ 2001(Trie树)

POJ 2503(Trie树)

POJ 3630(Trie树)


第一阶段:
练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,
因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打
出来.
1.最短路(Floyd、Dijstra,BellmanFord)
2.最小生成树(先写个prim,kruscal要用并查集,不好写)
3.大数(高精度)加减乘除
4.二分查找. 
(代码可在五行以内)
5.叉乘、判线段相交、然后写个凸包.
6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简)
7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式.
8. 
调用系统的qsort, 技巧很多,慢慢掌握.
9. 任意进制间的转换

第二阶段:
练习复杂一点,但也较常用的算法。
如:
1. 二分图匹配(匈牙利),最小路径覆盖
2. 
网络流,最小费用流。
3. 线段树.
4. 并查集。
5. 
熟悉动态规划的各个典型:LCS、最长递增子串、三角剖分、记忆化dp
6.博弈类算法。博弈树,二进制法等。
7.最大团,最大独立集。
8.判断点在多边形内。
9. 
差分约束系统.
10. 双向广度搜索、A*算法,最小耗散优先.


你可能感兴趣的:(acm学习)