省选模拟40

A. 染色问题

  考虑如何使用$m<=n+5$这个条件搞事情。

  发现如果我们将度数很少的点缩掉,那么剩余的点的个数会很少,甚至可以到直接搜索的程度。

  发现只要将度数$<=2$的点缩掉就可以了。

  对于度数等于1的点,可以直接消掉,给最终的答案乘上$k-1$即可。

  考虑给每条边设两个权值,即两边的点颜色相同时的权值和颜色不同的权值。

  度数等于2的点,那么需要将两条边合并成一条,考虑新加入这条边的权值,分为两边相同和不同讨论。

  最终在缩完点的图上只要搜索出答案就可以了。

B. IOer

  首先可以把题意转化成n个物品m天取完的方案数并且在某一天取走一件物品的贡献是确定的,所以所以枚举每个时间取走多少件就可以确定贡献。

  所以考虑这个东西的组合意义。

  假如有很多球,每个球上标有$1-m$的数字,其中标有m的球的种类数是u+v,其余数字球的种类数是u,那么求满足以下条件序列的个数:

  1.长度为n+m-1。

  2.每个数字出现至少1次。

  3.数字出现的顺序单调递增(m除外)。

  那么可以发现,满足条件的序列个数就是原来问题的答案$*u^{m-1}$。

  发现最后一个条件很烦人,那么考虑去掉它。可以发现,除了第$m$种球,其他每种球都是等价的,所以假如去掉了最后一个条件,那么答案就会变成原来的$(m-1)!$倍。

  所以只要求出来满足前两个条件的序列个数。

  这个东西可以简单的容斥得到,也就是枚举最多出现了多少种颜色,容斥得到出现m种颜色的方案数。

C. deadline

  考虑部分分的做法,假如将每个点相连的两种点之间连一条边,那么这张图显然是一张二分图。

  发现最大匹配必然每条边的两端至少选一个点,所以这个问题转化成了最小点覆盖。最小点覆盖=最大匹配,所以直接跑就行了。

  将这个东西扩展到正解。

  将每个时间段拆成两个点,之间连一条流量为1的边,对于每个任务$x$,假如$t=0$,那么S->x,流量为1,x->能够完成任务的时间段,流量为inf。否则x->T,能够完成的时间段->x,流量相同。

  之后跑最小割就可以得到答案。

原文地址:https://www.cnblogs.com/hzoi-cbx/p/12445217.html