luogu2774 方格取数问题(最小割)网络流24题:9

该博客介绍了Luogu2774题目的解决策略,该题涉及一个n*m的矩阵,要求在相邻数字不能同时选取的约束下,找到能取的最大数字之和。博主通过最小割思想,从逆向角度分析问题,将矩阵染色并构建网络流图,然后求解最大流来确定最小割,从而得到最大可能的取数和。文章包含解题过程及代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接

这是网络流24题整理 里的第九题,是最小割思想的入门题。

题目大意:

    1、n*m的矩阵里,每个格子都有一个数字,限制条件:相邻的数字不能同时取。

    2、求:以上条件下,取数的和最大。

题意分析:(最小割的值=最大流的值)

    1、最小割本身不难理解:就是用最少的代价,封掉所有的连通的路。(割=封!动词的不同表述而已);

    2、这题里面,正方向思考太复杂了。

    3、逆方向思考:

        1、每个格子,都能选相邻的数字(与题意要求刚好相反),让这个情况的值尽可能地小。

        2、用全图总值,减去这个(逆向1)的值。得到的就是答案。

解题过程:

    1、因为相邻格子都彼此独立:所以用染色的思维,可以将矩阵涂色,如下图:

        

    2、构图:st->白点,白点->黑点,黑点->ed。

    3、按照这个构图,跑最大流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值