高一寒假竞赛知识点梳理1

高一寒假竞赛知识点梳理1

世界以痛吻我,要我报之以歌。
——拉宾德拉纳特·泰戈尔

我热爱生活,我是一名快速成长的OIer

目录:

动态规划入门

知识点:

  1. 背包问题(动规最基础问题)
    1. 01背包(二维化滚动,滚动化一维,注意循环顺序与初始化)
    2. 完全背包(完全化01,01化倍增,或化为一维,注意循环顺序)
    3. 多重背包(倍增)
    4. 分组背包(注意循环组数+金钱+组员,一维动规 )
    5. 二维费用背包(双管齐下,二维注意循环顺序)
    6. 有条件的背包(直接枚举)
  2. 区间DP(注意循环层数+起点+影响因素,二维动规 )
memset(f,0,sizeof(f));//01背包不恰初始化
memset(f,-127,sizeof(f));
f[0]=0;//01背包恰取初始化

经验与教训:

  1. 抄书问题与最大子矩阵,可用前缀和“降维”
  2. 01背包与完全背包的拓展顺序
  3. 倍增思想很重要
  4. 多次用转移方程是必然趋势,思路要更加清晰,不要吝惜草稿纸

数据结构

知识点:

  1. 树基础(建树,遍历)
  2. 二叉树(结点性质)
  3. 指针
  4. 手写二叉堆(建堆 O(nlogn) ,取顶 O(logn)
  5. 图论
    1. 概念(有向图无向图权值度环DAG有向无环图拓扑排序强连通分量邻接矩阵邻接表前向星稠密图稀疏图)
    2. 最短路
      1. 多源最短路Floyd(dp O(n3) ,顺序kij)
      2. Dijkstra( O(n2) ,可加堆优化)
      3. Bellman-Ford( O(VE) ,浪费过大)
      4. SPFA( O(kE) ,高效但不稳定(有点像quicksort))
    3. 并查集(找爸爸时接短路)
    4. MST最小生成树
      1. prim( O(n2) ,最优感染法)
      2. kruskal( O(n2) ,dijkstra改编)

经验与教训:

  1. m和n千万不要搞混,尤其是定义MAXN与MAXM取值与数组的“定位“(按边还是按点),与循环i<=n与j<=m(可用i与j区分防混)
  2. 慎用memset
  3. 根据实际情况定义MAXN和MAXM,无向图注意MAXM>=m*2(MLE很惨痛,崩溃更惨痛)
  4. 注意起止点设置,切勿答非所问
  5. 遍历一张图,要注意图可能不会联通,故只for一遍通常不够( 血的教训
  6. 点权附同边权计算时,注意细节处理(包括结束的点)

附录: 寒假A题表1

ProblemsAspect时间复杂度Notes
light背包 O(n3) 滚动数组每次清零
money背包 O(n3) i>=0时f[i]才有意义
energy区间 O(n3) 循环顺序
合并果子区间 O(n3) 循环顺序
最大差值 luogu贪心 O(n) 水题
漂浮的鸭子 luogudfs(染色) O(n) 并查集思想
随机数生成器 luoguMATH O(n) / O(1) 见下
找根和儿子NULL指针
wordNULL可用sort作弊
fruit堆,队列,SORTNULLNOIP2004
lift队列NULLbfs初始状态
produce队列 O(n2) 判位长
前中求后序 O(n2) 纲举目张
扩展二叉树 O(n) print判空
drop O(logn) 判断单词位长
flistNULL纲举目张层序
线段树SUPERNULL调调调。。。
bfs最短路bfs O(n+E) 适时跳出
moneydijkstra O(n2) 注意起止点
堆排序二叉堆 O(nlogn) 上蹿下跳
shortfloyd O(n3) 初始化
最短路dijkstra+堆 O(nlogn+) 不断更新
butterSPFA O(nkE) 无向边做两条边
最小生成树prim O(n2) 无向边做两条边
color 练习赛bfs(染色) O(n) 外循环n次
book 练习赛SPFA O(kE) 点权处理
teacher 练习赛并查集+分组背包 O(nW) 链表顺序
最小生成树prim O(n2) 可跳边优化
最小生成树kruskal O(n2) 注意更新条件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值