• 「CF1450C1」Errich-Tac-Toe (Easy Version)


    • 分析

      考虑对矩阵染色

      对于 (s_{i,j}) 染色为 ((i+j) mod 3)

      显然,不可能存在连续 3 个(不包括斜边)格子同颜色。

      所以只要将同种颜色的格子改为 ( ext{O}) 就可以直接平局。

      设不为空的格子数量为 (m)

      若翻转颜色为 (0) 要翻转 (c_0) 次,颜色为 (1) 要翻转 (c_1) 次,颜色为 (2) 要翻转 (c_2) 次。、

      因为 (c_0+c_1+c_2=m)

      (min(c_0,c_1,c_2)=leftlfloordfrac{m}{3} ight floor)

      所以对于本题,对于不为空的格子,选择出现次数最小的颜色所对应的非空格子全部改为 ( ext{O}) 即可解决本题。

      最后,多测不清空,爆零两行泪 (没错说的就是我这个屑)。


    • 代码
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    using namespace std;
    int T,n;
    char s[305][305],s2[305][305],s3[305][305];
    int main()
    {	scanf("%d",&T);
    	while(T--)
    	{	scanf("%d",&n);
    		for(int i=1;i<=n;i++)
    		{	scanf("%s",s[i]+1);
    			for(int j=1;j<=n;j++)
    				s2[i][j]=s3[i][j]=s[i][j];
    		}
    		int m=0,cnt=0,cnt2=0,cnt3=0;
    		for(int i=1;i<=n;i++)
    			for(int j=1;j<=n;j++)
    			{	if(s[i][j]!='X')continue;
    				m++;
    				if((i+j)%3==0)cnt++;
    				if((i+j)%3==1)cnt2++;
    				if((i+j)%3==2)cnt3++;
    			}
    		int x=min(cnt,min(cnt2,cnt3));
    		if(x==cnt)
    		{	for(int i=1;i<=n;i++)
    			{	for(int j=1;j<=n;j++)
    				{	if(s[i][j]!='X')printf(".");
    					else if((i+j)%3==0)printf("O");
    					else printf("X");
    				}
    				printf("
    ");
    			} 
    		}
    		else if(x==cnt2){
    			for(int i=1;i<=n;i++)
    			{	for(int j=1;j<=n;j++)
    				{	if(s[i][j]!='X')printf(".");
    					else if((i+j)%3==1)printf("O");
    					else printf("X");
    				}
    				printf("
    ");
    			} 
    		}
    		else if(x==cnt3){
    			for(int i=1;i<=n;i++)
    			{	for(int j=1;j<=n;j++)
    				{	if(s[i][j]!='X')printf(".");
    					else if((i+j)%3==2)printf("O");
    					else printf("X");
    				}
    				printf("
    ");
    			} 
    		}
    	}
    	return 0;
    }
    

    [ ext{by Rainy7} ]

  • 相关阅读:
    【Python】小技巧
    【Python】内置函数清单
    【Python】序列的方法
    【Python】异常处理
    【Python】函数的参数对应
    【Python】函数对象
    redhat7安装jdk1.7报错/home/renqiwei/jdk1.7/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
    redhat更换yum源
    python3降级为python2(linux)
    centos安装apt命令
  • 原文地址:https://www.cnblogs.com/Rainy7/p/solution-cf1450c1.html
Copyright © 2020-2023  润新知