CSP-S赛前专题总结

图论

  • 最短路
  • 生成树
  • 强连通
  • 差分约束
  • 拓扑排序
  • 欧拉图
最短路

1.建模:
将原问题转化通过某种性质转化为图论问题
注意:

  • 建图的时候是否可以优化(是否加了一些对答案无影响的边)
  • 和某些特定数量的点有关,考虑枚举。(枚举时也可以优化,比如只枚举前几个,便可以推出最后一个,诸如此类)
  • 一些需要用到的值,考虑预处理。枚举+拼凑答案

可以建模的情况:

  1. 最值(e.g.墨墨的等式)

2.变形:

  1. dijkstra处理的是单源最短路径,但通过增加一个超级源点,也可以处理多源最短路径
  2. 最短路计数
  3. 次短路,枚举最短路上的每一条边看是否可以更新答案
  4. 分层图:理解每一层的含义,注意连边
  5. 最短路树:特别适用于源点到每个节点的最短路唯一的情况。(题目往往需要处理非树边。并查集的妙用:判断两点是否被更新过)

3.细节:

  1. 判断一条边是否存在于最短路上,需要从起点和终点开始各做一次最短路。 d i s [ S ] [ u ] + d i s [ v ] [ T ] + w [ u ] [ v ] = = d i s [ S ] [ T ] dis[S][u]+dis[v][T]+w[u][v]==dis[S][T] dis[S][u]+dis[v][T]+w[u][v]==dis[S][T]
生成树

1.变形:

  1. 最小度限制生成树
  2. 最优比率生成树(0/1分数规划)
  3. 最小乘积生成树
  4. 最小生成树计数
  5. Kruskal重构树
  6. 最小瓶颈路
  7. 动态维护最小生成树
强连通

Tarjan

  1. 有向图
  2. 无向图
差分约束

一定要注意隐含条件

拓扑排序

应用广泛

欧拉路

1.判断是否存在欧拉回路
对于有向图 — 每个点的出度 =入度,(且图联通)
对于无向图 — 每个点的度数为偶数,(且图联通)
2.求解欧拉回路


动态规划

  • 线性dp
  • 区间dp
  • 树形dp
  • 数位dp
  • 斜率优化dp
  • 状压dp
  • 概率期望do

线性dp

其实不只是对于线性dp,大多数dp题在定义状态的时候,就是把你所需要的全部列出来,然后再分析简化。
状态一定要明确

区间dp

感觉做到的区间dp都一个样。
记忆化搜索

树形dp

常见的状态定义:
f [ i ] [ . . . ] [ . . . ] f[i][...][...] f[i][...][...]表示以i为根的子树的…信息

数位dp
  1. 求满足限制的第k小的数(可以先确定大致位数,然后运用试填法)
  2. 求区间[l,r]之内满足限制的数的个数(看作是 [ 1 , r ] − [ 1 , l − 1 ] [1,r]-[1,l-1] [1,r][1,l1]
斜率优化dp

和平时推式子没什么两样
只是变个形优化一下
y = k ∗ x + b y=k*x+b y=kx+b
x , y x,y x,y只和决策信息有关
k , b k,b k,b只和当前状态有关

  1. 合并同类项的时候要细心
  2. 注意初值
状压dp

一般可以从数据范围获得提示
将状态存下来(然后就和枚举没什么两样)
注意状态的定义一定要涵盖所有情况(比如NOIP宝藏)

概率期望dp

暂时放这儿。
这周没来得及写


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值