BZOJ P1475 方格取数

来源:互联网 发布:怎么下载旧版软件 编辑:程序博客网 时间:2024/05/16 01:49

直接转二分图之后求一遍最大点权独立集

最大点权独立集=总权值-最小点权覆盖集

最小点权覆盖集就是每一条边至少有一个定点处于集合中,且这些点的权值最小

然后我们先看看最小点权覆盖集怎么求

这是有一种模板的把图黑白染色之后把S连向黑色点流量为黑点权值,白点连向T流量为白点权值

然后黑点白点相连的点连一条流量为inf的边,然后跑完最大流就是最小点权覆盖集了

为什么呢??我们知道最大流=最小割,那么用最小割的眼光来看着题,就是S->a,a->b,b->T

那么显然不会割a->b这条边,因为是inf,割它是作死吗??

然后肯定是割S->a,或者b->T,意思就是两个点中至少选一个点嘛

然后就可以求出最小点权覆盖集了



(下面证最大点权独立集=总权值-最小点权覆盖集

网上都说去看胡*涛的论文,但我自己是这么想的

最小点权覆盖集其实就是相连两个点至少选一个点

而最大点权独立集其实就是相连两个点至多选一个点

那么其实就是减一减的事情咯)



上面是原版证明,但我觉得还是不够严谨 下面改一下



下面证最大点权独立集=总权值-最小点权覆盖集

先证点独立集=总点-覆盖集

网上都说去看胡*涛的论文,但我自己是这么想的

覆盖集其实就是相连两个点至少选一个点

而点独立集其实就是相连两个点至多选一个点

所以点独立集=总点-覆盖集

然后我们要求点独立集最大,而总点为定值,所以要覆盖集最小咯

所以最大点权独立集=总权值-最小点权覆盖集



接下来就是码农的任务了

都讲这么清楚了还要用代码吗?

1 0