Description
- 在2016年,佳缘姐姐喜欢上了一款游戏,叫做泡泡堂。简单的说,这个游戏就是在一张地图上放上若干个炸弹,看是否能炸到对手,或者
- 躲开对手的炸弹。在玩游戏的过程中,小H想到了这样一个问题:当给定一张地图,在这张地图上最多能放上多少个炸弹能使得任意两个
- 炸弹之间不会互相炸到。炸弹能炸到的范围是该炸弹所在的一行和一列,炸弹的威力可以穿透软石头,但是不能穿透硬石头。给定一张
- nm的网格地图:其中代表空地,炸弹的威力可以穿透,可以在空地上放置一枚炸弹。x代表软石头,炸弹的威力可以穿透,不能在此放置
- 炸弹。#代表硬石头,炸弹的威力是不能穿透的,不能在此放置炸弹。例如:给出14的网格地图xx*,这个地图上最多只能放置一个炸
- 弹。给出另一个14的网格地图x#,这个地图最多能放置两个炸弹。现在小H任意给出一张nm的网格地图,问你最多能放置多少炸弹。
Input
- 第一行输入两个正整数n,m,n表示地图的行数,m表示地图的列数。1≤n,m≤50。接下来输入n行m列个字符,代表网格地图。*的个数不超过
- n*m个。
Output
- 输出一个整数a,表示最多能放置炸弹的个数
Sample Input
4 4*
# #
xxx#Sample Output
5题解
- 提取出每一行和每一列的极长连续不含#的非空字串
- 显然,炸弹只能放在*上,而放一个就会把它周围清空,这样显然就是二分图最大匹配了
- 以他们为节点,每一行和每一列连边。跑一个匈牙利就出来了。
- zz地弄了个骚操作加边,然后WA一万次。。。
1 |
|