首页 > 其他 > 详细

Codeforces Round #589 (Div. 2) - B

时间:2019-09-30 10:06:58      阅读:150      评论:0      收藏:0      [点我收藏+]

技术分享图片

题目大意:给定一个 $h$ 行, $w$ 列的矩形,接下来一行 $h$ 个数字, $hi$ 代表第 $i$ 行从左到右有连续的 $hi$ 个染成黑色的方块,列同理,然后问满足条件的矩形的个数(% 1e9 + 7)。

比赛写的时候第一次挂掉了,因为判断原条件不成立的代码写挂了= = ,不知道自己当时在想什么。

我在处理数据时,开了两个数组,分别记录行与列的染色情况。

	forab(i, 1, h)
	{
		cin >> r[i];
		forab(k, 1, r[i])
			G[i][k] = 1, R[i][k] = 1;
	}
	forab(i, 1, w)
	{
		cin >> c[i];
		forab(k, 1, c[i])
			G[k][i] = 1, C[k][i] = 1;
	}

  

我判断原条件不成立的想法是:

	forab(i, 1, h)
	{
		if (C[i][r[i] + 1] == 1)
		{
			flag = 1;
			break;
		}
	}
	forab(i, 1, w)
	{
		if (R[c[i] + 1][i] == 1)
		{
			flag = 1;
			break; 
		}
	}

最后计数的判断为:

	forab(i, 1, h)
	{
		forab(j, 1, w)
		{
			if (G[i][j])
				continue;
			if (r[i] + 1 == j || c[j] + 1 == i)
				continue;
			else
				ans = 2 * ans % MOD;
		}
	}

  

Codeforces Round #589 (Div. 2) - B

原文:https://www.cnblogs.com/zssst/p/11610845.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!