2024 5月

计数

如果要记录满足条件的方案数的话,看起来无从下手,看起来不好刻画dp的话。考虑如果给你这个方案你会怎么做,然后我们直接对着这个过程硬搞一个自动机出来,然后对着自动机dp
nflsoj,给你一张二分图,左边n个点,右边m个点,左边一个点和右边一个点有边的概率是1/2,求左边右边各随机一个点的期望距离。首先转换成求左边1号点到右边1号点的期望距离,然后对着bfs搞dp,记录状态(当前在左/右边,当前层的点数,当前层剩下的点数,另一层剩下的点数)下的概率和期望。倒着dp直接做完了

FLOW

cf1666k,考虑最小割,但是有三种状态,我们考虑增加变量来表示更多状态,拆点,ST属于A,TS属于B,SS或TT属于C,发现模型很好,贪心的发现SS和TT的情况不会出现,于是做完了
p9070,先转换成n*n的矩阵,第i个人有第i行的所有牌,目标是每行都是个排列,考虑sub1,发现操作右上三角会使矩阵转置,考虑sub2,发现把不一样的放在最后一个是可以的,那么就可以归纳。那么相当于我们每次从每行中选一个,使得选出的是一个排列。那么就是二分图(行-权值)中找到一个完美匹配,我们真的能每次都找到吗,可以的。删除后一些点后,每个点度数一样,根据Hall定理可知一定有解。

trick

如果要选最多的线段使得他们的交非空,答案就是每个线段区间加,区间最大值
如果赛时发现问题转化成一个看起来比较NP的问题,且发现的性质用不大上,考虑编一些定理,比如最小点覆盖(覆盖所有边)=n-最大独立集。DAG最小路径覆盖(覆盖点)=n-二分图最大匹配。在某些特殊情况,如三元组(i,j,k)i->j,j->k存在且i->k一定存在的话,那么最小路径覆盖=最小点覆盖。DAG上最小路径覆盖=最长反链,这个其实比较显然。如果带权的话,考虑费用流或者把普通问题流量为一的边改成权值。

构造

cf1876e,发现如果以某个点为根周围全是外向边则可随便染色,所以如果可以定向为外向的话是非常优的,如果碰到内向边。如果我们还有颜色就染上,否则说明从根到当前点内向边多于外向边,我们以当前这个点为根肯定不劣。所以我们只需要找到最少内向边的根就可以。

posted @ 2024-05-05 19:12  ciuim  阅读(24)  评论(0)    收藏  举报