zoukankan      html  css  js  c++  java
  • 玩诈欺的小杉

    题目

    解题思路

    对一个点进行操作,他只对左右各一列,上下两列有影响。
    又因为操作顺序对结果没有影响(显然)
    所以我们可以一列一列搜
    可以发现,上一列的状态是完全影响这一列的状态的
    再用异或来优化
    时间复杂度(O(MT2^n))

    Code

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int t,n,m,y[25],x[25];
    
    int main()
    {
    	scanf("%d%d%d",&n,&m,&t);
    	while (t--)
    	{
    		memset(x,0,sizeof(x));
    		for (int i = 1; i <= n; i++)
    			for (int j = 1; j <= m; j++)
    			{
    				int q;
    				scanf("%1d",&q);
    				if (q) x[j] |= (1 << i - 1);
    			}
    		int ans = 0;
    		for (int i = 0; i <= (1 << n) - 1; i++)
    		{
    			y[0] = i;
    			for (int j = 1; j <= m; j++) y[j] = x[j];
    			for (int j = 1; j <= m; j++)
    			{
    				y[j] = y[j] ^ y[j - 1];
    				y[j] = y[j] ^ (y[j - 1] >> 1);
    				y[j] = y[j] ^ (y[j - 1] >> 2);
    				y[j] = y[j] ^ (y[j - 1] << 1);
    				y[j] = y[j] ^ (y[j - 1] << 2);
    				y[j] = y[j] & ((1 << n) - 1);
    				y[j + 1] = (y[j + 1] ^ y[j - 1]) & ((1 << n) - 1);
    			}
    			if (y[m] == 0) ans++;
    		}
    		printf("%d
    ",ans);
    	}
    }
    
  • 相关阅读:
    c++11之智能指针
    SurfaceFlinger与Surface概述
    android GUI 流程记录
    文章收藏
    android performance
    POJ3349
    java中的volatile和synchronized
    [原创]分期还款的名义利率与真实利率
    Java IO 流总结
    telegram
  • 原文地址:https://www.cnblogs.com/nibabadeboke/p/13472145.html
Copyright © 2011-2022 走看看