网络流

1

题意:给定一个 nm n ∗ m 的网格,每个位置要选择一个 0 0 H H 中的值,选择每个值都有一个代价,相邻的取值不能超过 D D ,最小化代价。

每一个格子建 H H 个点, (x,y,z) ( x , y , z ) (x,y,z+1) ( x , y , z + 1 ) w(x,y,z+1) w ( x , y , z + 1 ) S S (x,y,1) ( x , y , 1 ) w(x,y,1) w ( x , y , 1 ) (x,y,H) ( x , y , H ) 向汇点连正无穷。

现在我们来限制相邻的取值不能超过 D D 。考虑这样一种连边:从 (x,y,z) ( x , y , z ) 向与它四联通的 (x,y,zD) ( x ′ , y ′ , z − D ) 连正无穷。这样如果选择了 (x,y,z) ( x , y , z ) ,那么一定不会选择 (x,y,zD) ( x ′ , y ′ , z − D ) 下面的。如果对于每个点都这样连边,那么对于每一条边,与它四联通的可选的区间就是合法的了。

2

题意:给定一张 nm n ∗ m 的棋盘,在某个位置放棋子有代价,一个位置被占领当且仅当其上有棋子或者所有周围的都有棋子,一个位置被占领有收益,求最大收益。

先黑白染色,然后把每个点拆成两个,从源点向黑点连费用的边,黑点向它的分身连收益,黑点向与它四联通的白点的分身连inf,黑点分身向与它四联通的白点连inf,白点分身向白点连收益,白点向汇点连花费。答案是所有收益的和减去最小割。

这样,如果要得到一个点的收益(不放设为黑点),那么我们或者割掉源点连向它的花费,或者割掉与它四联通的四个白点的花费。白点同理。于是问题得到了解决。

以上的建模其实是,四个点 a,b,c,d,e,f,a向b连w1,e向f连w2,b向c连w3,d向e连w4,b向d连inf,c向e连inf。这样就有两种割法:
1.割掉w1或者w2.
2.割掉w3和w4。

3

给定 n 个数字,要求把数字分成若干环,满足每个环至少三个数字,环上相邻的数字和必须为质数。数字至少是2。

“分成若干环”,首先想到,一张图由若干个环构成的充要条件是其中每个点的度数都是2。观察到奇数只能和偶数相邻,因此这是个二分图。从源点向奇数点连流量2的边,从奇数点向能与它配对的偶数点连1的边,偶数点向汇点连2的边。如果满流,说明找到了一种使每个点度数都为2的方案。

4

给定一个 n*m 的棋盘,有的位置是障碍,你要在其他所有位置都建上过山车,过山车是一些环。一个位置如果是弯道则有这个位置的收益。最大化收益。

这个题目也是构成若干个环,因此建图与上一题类似。考虑如何最大化收益。我们发现,多一个弯道获得一个收益,也就相当于多一个直道付出一个代价。因此我们对于每一个格子新建两个点,一个表示上下走,另一个表示左右走。观察到一个直道相当于走两个上下或者走两个左右。这启发我们从一个格子向它上下走的点连两条边,一条流量1费用0,一条流量1费用是在这个格子有弯道的收益。向左右走的点连边同理。这样,连续走两个同方向就会损失弯道的收益,否则不会。其余的就好办了,从源点向黑格子连流量2费用0,一个点对应的上下走的格子向它上面和下面的点对应的上下方向的格子连流量1费用0,白格子向汇点连流量2费用0。

5

给定一个 n*n 的网格,有些位置不能涂色,其他位置必须涂色,每
次可以横着或者竖着涂一笔,一个位置不能被涂两次。求最少的笔数。

这个题真难想啊。。
相邻的两个格子中建一个虚点,表示这个虚点左边和右边(或上边下边)的点可以一笔涂完。然后,显然,每个格子上下的虚点不能喝左右的虚点同时选中。因此连接上面的虚点和左右的虚点,下面的虚点和左右的虚点。一条边表示两端点不能同事被选中。现在我们要选出尽可能多的的点使得两两之间没有边。也就是求最大独立集。利用最大独立集等于总点数-最大匹配即可求出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值