p1262 间谍网络
分析:
已知部分间谍收买的花费和间谍的编号求最少花费
1.对于这种关系可能存在回路(环)所以缩一下点求一下强联通分量
2.对新图判断一下又无可能全部收买只需要判断一下入度为0点是否可以收买
3.若可以收买(tarjan时求出每个强连通分量的最小花费作为缩点后的新花费)sum求所有入度为0的点和
P2294 [HNOI2005]狡猾的商人
好题。。。并查集。。差分约束
分析:
一、加权并查集
对于每次新加入i->j月账目之和可看做i->j之间的关系
同时并查集加权动态维护前缀和若产生冲突输出false
二、差分约束(spfa)
对于每次加入的关系i->j建立正向边,j->i建立反向边;
spfa不断更新min若出现负环即产生冲突输出false
树形DP进阶:
一、树形背包DP:
P2014 选课https://www.luogu.org/problem/show?pid=2014
分析:
1. 经典树形DP但需+背包思想。
2.对于每节课均有一个限制条件(也能没有),我们可以以每个无限制的点为根结点建立一棵树,但是可能出现多棵树的情况
因而我们可以建立一个虚拟节点(n+1)连接所有入度为一的点这样就转化为一棵树的DP问题,
3.我们设状态f[u][v]表示在u节点容量为v的背包所能获得的最大价值
所以 f[u][v]=max(f[u][v],son's f[u][k]+f[v][v-k]); 容量为v(包含当前节点)减去为儿子所留空间k并由儿子v的状态转移
初始化为f[u][1]=w[u];但要注意我们新增加了一个虚拟节点这个节点在任何情况下都要选所以最终答案是f[n+1][m+1]
二、tarjan+树形DP
P2515 [HAOI2010]软件安装
1.缩一下点在进行树形
2.DP注意状态设计和缩点时的处理