找回密码
 立即注册
查看: 498|回复: 0

ACM算法总结及刷题参考

[复制链接]
发表于 2021-11-24 13:18 | 显示全部楼层 |阅读模式
《ACM算法:初级》

一.基本算法:

(1)枚举.
(2)贪心.
(3)递归和分治法.   
(4)递推.     
(5)构造法.
(6)模拟法.
各位朋友们有需要C语言程序设计、数据结构算法、C语言经典编程100例实战、C++语言程序设计、Windows编程开发入门等等,点击下面的链接就可以学习,有配套学习视频及源码。帮助大家提高编程实战水平,比如:考国家二级C语言、计算机相关专业考研C和数据结构的辅导学习资料。祝大家学习开心快乐,天天进步,收获满满,加油我行!!!
大家可以根据自己的需要,选择适合自己的课堂哦^-^,点击链接就可以学习啦,加油
C语言入门指南系列-学习视频教程-腾讯课堂
C语言经典编程100例实战-学习视频教程-腾讯课堂
数据结构算法(C语言版)-学习视频教程-腾讯课堂
C++语言入门指南系列-学习视频教程-腾讯课堂
Windows高级编程(上册)-学习视频教程-腾讯课堂

二.图算法:

(1)图的深度优先遍历和广度优先遍历.      
(2)最短路径算法.  
(3)最小生成树算法.   
(4)拓扑排序.
(5)二分图的最大匹配 (匈牙利算法).
(6)最大流的增广路算法(KM算法).
三.数据结构.

(1)串.   
(2)排序(快排、归并排(与逆序数有关)、堆排).     
(3)简单并查集的应用.      
(4)哈希表和二分查找等高效查找法(数的Hash,串的Hash).   
(5)哈夫曼树.
(6)堆.      
(7)trie树(静态建树、动态建树).
四.简单搜索

(1)深度优先搜索.
(2)广度优先搜索.
(3)简单搜索技巧和剪枝.
五.动态规划

(1)背包问题.
(2)型如下表的简单DP   
六.数学

(1)组合数学:         
1.加法原理和乘法原理.         
2.排列组合.         
3.递推关系.      
(2)数论.         
1.素数与整除问题         
2.进制位.         
3.同余模运算.      
(3)计算方法.         
1.二分法求解单调函数相关知识.
七.计算几何学.

(1)几何公式.   
(2)叉积和点积的运用(如线段相交的判定,点到线段的距离等).   
(3)多边型的简单算法(求面积)和相关判定(点在多边型内,多边型是否相交).  
(4)凸包.
《ACM算法:中级》

一.基本算法:

(1)C++的标准模版库的应用.
(2)较为复杂的模拟题的训练.
二.图算法:

(1)差分约束系统的建立和求解.  
(2)最小费用最大流.   
(3)双连通分量.
(4)强连通分支及其缩点.
(5)图的割边和割点.
(6)最小割模型、网络流规约.
三.数据结构:

(1)线段树.   
(2)静态二叉检索树.
(3)树状树组.
(4)RMQ.
(5)并查集的高级应用.  
(6)KMP算法.
四.搜索

(1)最优化剪枝和可行性剪枝.      
(2)搜索的技巧和优化.
(3)记忆化搜索.
五.动态规划

(1)较为复杂的动态规划(如动态规划解特别的施行商问题等).  
(2)记录状态的动态规划.
(3)树型动态规划.
六.数学

(1)组合数学:        
1.容斥原理.         
2.抽屉原理.         
3.置换群与Polya定理(poj1286,poj2409,poj3270,poj1026).         
4.递推关系和母函数.     
(2)数学.         
1.高斯消元法.   
2.概率问题.  
3.GCD、扩展的欧几里德(中国剩余定理)   
(3)计算方法.         
1.0/1分数规划.
2.三分法求解单峰(单谷)的极值.         
3.矩阵法 .   
4.迭代逼近.
(4)随机化算法.
(5)杂题.
七.计算几何学:

(1)坐标离散化.        
(2)扫描线算法(例如求矩形的面积和周长并,常和线段树或堆一起使用).
(3)多边形的内核(半平面交) .
(4)几何工具的综合应用.
《ACM算法:高级》

一.基本算法要求:  

(1)代码快速写成,精简但不失风格.
(2)保证正确性和高效性.
二.图算法:

(1)度限制最小生成树和第K最短路.
(2)最短路,最小生成树,二分图,最大流问题的相关理论(主要是模型建立和求解).
(3)最优比率生成树.  
(4)最小树形图.
(5)次小生成树.      
(6)无向图、有向图的最小环.   
三.数据结构.  

(1)trie图的建立和应用.
(2)LCA和RMQ问题(LCA(最近公共祖先问题) 有离线算法(并查集+dfs) 和 在线算法.
(3)双端队列和它的应用(维护一个单调的队列,常常在动态规划中起到优化状态转移的目的).  
(4)左偏树(可合并堆).        
(5)后缀树(非常有用的数据结构,也是赛区考题的热点).
四.搜索

(1)较麻烦的搜索题目训练.
(2)广搜的状态优化:利用M进制数存储状态、转化为串用hash表判重、按位压缩存储状态、双向广搜、A*算法.
(3)深搜的优化:尽量用位运算、一定要加剪枝、函数参数尽可能少、层数不易过大、可以考虑双向搜索或者是轮换搜索、IDA*算法.
五.动态规划  

(1)需要用数据结构优化的动态规划.
(2)四边形不等式理论.
(3)较难的状态DP.
六.数学

(1)组合数学.         
1.MoBius反演.   
2.偏序关系理论.      
(2)博奕论.         
1.极大极小过程.   
2.Nim问题.
七.计算几何学.  

(1)半平面求交.   
(2)可视图的建立.  
(3)点集最小圆覆盖.      
(4)对踵点(poj2079)      

补充《Dp状态设计与方程总结》

1.不完全状态记录

<1>青蛙过河问题
<2>利用区间dp
2.背包类问题

<1> 0-1背包,经典问题
<2>无限背包,经典问题
<3>判定性背包问题
<4>带附属关系的背包问题
<5> + -1背包问题
<6>双背包求最优值
<7>构造三角形问题
<8>带上下界限制的背包问题(012背包)
3.线性的动态规划问题

<1>积木游戏问题
<2>决斗(判定性问题)
<3>圆的最大多边形问题
<4>统计单词个数问题
<5>棋盘分割
<6>日程安排问题
<7>最小逼近问题(求出两数之比最接近某数/两数之和等于某数等等)
<8>方块消除游戏(某区间可以连续消去求最大效益)
<9>资源分配问题
<10>数字三角形问题
<11>漂亮的打印
<12>邮局问题与构造答案
<13>最高积木问题
<14>两段连续和最大
<15>2次幂和问题
<16>N个数的最大M段子段和
<17>交叉最大数问题
4.判定性问题的dp(如判定整除、判定可达性等)   

<1>模K问题的dp
<2>特殊的模K问题,求最大(最小)模K的数
<3>变换数问题
5.单调性优化的动态规划

<1>1-SUM问题
<2>2-SUM问题
<3>序列划分问题(单调队列优化)
6.剖分问题(多边形剖分/石子合并/圆的剖分/乘积最大)

<1>凸多边形的三角剖分问题
<2>乘积最大问题
<3>多边形游戏(多边形边上是操作符,顶点有权值)
<4>石子合并(N^3/N^2/NLogN各种优化)
7.贪心的动态规划

<1>最优装载问题
<2>部分背包问题
<3>乘船问题
<4>贪心策略
<5>双机调度问题Johnson算法
8.状态dp

<1>牛仔射击问题(博弈类)
<2>哈密顿路径的状态dp
<3>两支点天平平衡问题
<4>一个有向图的最接近二部图
9.树型dp

<1>完美服务器问题(每个节点有3种状态)
<2>小胖守皇宫问题
<3>网络收费问题
<4>树中漫游问题
<5>树上的博弈
<6>树的最大独立集问题
<7>树的最大平衡值问题
<8>构造树的最小环
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-23 03:24 , Processed in 0.087755 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表