zoukankan      html  css  js  c++  java
  • 格子染色

    题意:

    有两块n * m的图,现在给出n * m的0/1图,1表示这两张图这个地方都染过色,并且保证不会在边界上,0表示都没有,现在知道的是这两张图染色的格子都是联通块,现在求这些格子的染色情况。

    题解:

    这题我一眼上去就是DFS啊,我去构造题啊,智商被碾压了QAQ

    这样构造然后再将都有的部分加入,那么都是联通块辣!

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 5e2 + 7;
    int n, m, mp[N][N], ans1[N][N], ans2[N][N];
    
    int main ()
    {
    	scanf ("%d%d", &n, &m);
    	for (int i = 1; i <= n; ++i)
    		for (int j = 1; j <= m; ++j)
    		{
    			scanf ("%1d", &mp[i][j]);
    		}
    	for (int i = 1; i <= n; ++i)
    	{
    		ans1[i][1] = 1;
    		for (int j = 1; j <= m; ++j) if (mp[i][j]) ans1[i][j] = 1;
    		if ((i & 1) == 1) for (int j = 2; j <= m - 1; ++j) ans1[i][j] = 1;
    	}
    	for (int i = 1; i <= n; ++i)
    	{
    		ans2[i][m] = 1;
    		for (int j = 1; j <= m; ++j) if (mp[i][j]) ans2[i][j] = 1;
    		if ((i & 1) == 0) for (int j = m - 1; j >= 2; --j) ans2[i][j] = 1;
    	}
    	for (int i = 1; i <= n; ++i)
    	{
    		for (int j = 1; j <= m; ++j)
    			printf ("%d", ans1[i][j]);
    		cout << endl;
    	}
    	cout << endl;
    	for (int i = 1; i <= n; ++i)
    	{
    		for (int j = 1; j <= m; ++j)
    			printf ("%d", ans2[i][j]);
    		cout << endl;
    	}
    	return 0;
    }
    

      

    总结:

    仔细看清题目的条件,然后再根据某些性质搞一搞。

  • 相关阅读:
    mysql的cmd窗口查看数据库信息
    常见抓包工具
    图形数据库
    支付宝支撑双十一4200万次/秒的数据库请求峰值的技术实现
    处理tomcat内存溢出问题
    maven将jar包打如本地仓库命令
    fastJson去掉指定字段
    mybatis insert 返回主键
    maven引入源码
    mysql实现主从复制
  • 原文地址:https://www.cnblogs.com/xgtao/p/6021101.html
Copyright © 2011-2022 走看看