zoukankan      html  css  js  c++  java
  • 【CF】B. Mine Sweeper II

    B. Mine Sweeper II

    戳我

    思路

    地雷格向非地雷格发出的数字等于非地雷格向地雷格接收到的数字也将等于地雷格从非地雷格回收到的数字总和。

    (根据“数字”守恒)

    将非地雷格转换成地雷格可以看成是把此时该地雷格上的数字一一归还给相应的非地雷格,而地雷格在接收到周围的原本的非地雷格归还的数字后将变成用来接收数字的非地雷格。

    至于[m*n/2]操作次数能够完成,以上的变换是互补的,如果说一种方案的操作次数是大于[m*n/2],那么另外一种方案的所需的操作次数将少于这个变换次数。

    补题代码

    #include <bits/stdc++.h>
    #define MEM(a,x) memset(a,x,sizeof(a))
    #define W(a) while(a)
    #define gcd(a,b) __gcd(a,b)
    #define pi acos(-1.0)
    #define PII pair<int,int>
    #define pb push_back
    #define mp make_pair
    #define fi first
    #define se second
    #define ll long long
    #define rep(i,x,n) for(int i=x;i<n;i++)
    #define repd(i,x,n) for(int i=x;i<=n;i++)
    #define MAX 1000005
    #define MOD 1000000007
    #define INF 0x3f3f3f3f
    #define lowbit(x) (x&-x)
    using namespace std;
    int n,m;
    
    int main()
    {
    	scanf("%d%d",&n,&m);
    	char g[2][n+1][m+1],comp[n+1][m+1];
    	repd(i,1,n)
    	    repd(j,1,m)
    	    {
    	    	cin>>g[0][i][j];
    	    	g[1][i][j]=g[0][i][j]=='X'?'.':'X';
    		}
    		
    	repd(i,1,n)
    	    repd(j,1,m)
    		    cin>>comp[i][j];
    
    	    
      
    	int cnt[2]={0};
    	repd(i,1,n)
    	    repd(j,1,m)
            {
                if(g[0][i][j]^comp[i][j]) cnt[0]++;
    			if(g[1][i][j]^comp[i][j]) cnt[1]++;	
    		}	    
    	
    	bool flag=1;
    	repd(i,0,1)
    	{
    		if(cnt[i]<=(n*m)/2)
    	    {
    	    	flag=0;
    	    	repd(j,1,n)
    	    	{
    	    		repd(k,1,m)
    	    		    printf("%c",g[i][j][k]);
    	    	    printf("
    ");
    			}
    			break;
    		}
    	}
    	if(flag)cout<<-1<<endl;
        return 0;
    }
    
    
  • 相关阅读:
    POJ 1129 深搜&四色染图&模拟
    POJ 1011 很经典的树枝拼凑的深度搜索
    HDU 2564 词组缩写
    Java中的split函数的用法
    java中next和nextline的区别
    简探this和super
    再探Java中的继承加载顺序
    Java面向接口编程小例子 2
    Dos命令整理集(持续更新)
    VMware WorkStation9.0虚拟机如何运行WINPE
  • 原文地址:https://www.cnblogs.com/BeautifulWater/p/15117370.html
Copyright © 2011-2022 走看看