• Codeforces Round #589 (Div. 2)


    题目大意:给定一个 $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;
    		}
    	}
    

      

  • 相关阅读:
    前端学习
    json服务器
    https
    猎聘第一个项目总结
    biao项目技术点评
    编码
    Java补充
    MySQL无法同时执行多条语句解决办法
    Java 源码 Optional 类
    Java 源码 ArrayList 集合类
  • 原文地址:https://www.cnblogs.com/zssst/p/11610845.html
Copyright © 2020-2023  润新知