首页 > 其他分享 >CF1450C1 Errich-Tac-Toe (Easy Version)

CF1450C1 Errich-Tac-Toe (Easy Version)

时间:2023-11-13 14:45:25浏览次数:34  
标签:Version 方式 更改 int CF1450C1 num Easy 棋子 一种

思路

如果去考虑 O 的摆放,再考虑那些改为 X,这样不好思考,实现也很不好写,所以我们可以考虑构造一种通解。

如果将上图所有标红的位置都放上 X,那么无论 O 如何放,都不可能胜利,而 X 因为原本就没有,所以摆上后也不可能胜利。

不过,因为更改的次数不能超过棋子总数的 \(\frac 1 3\),所以这种方案不一定满足条件(比如 O 全放在红格子上,那么更改次数就是总棋子数)。

实际上,图中的方式只是一种,整体向上挪一格和挪两个也是一种方式,如果一格棋子的位置是 \((i,j)\),那么可以根据 \((i+j)\bmod 3\) 的值,分为三类,将一类的棋子全部改为 X 就是一种通解。

显然,三种更改方式可以覆盖所有的棋子,那么根据抽屉原理,至少有一种方式,更改的棋子少于总棋子的 \(\frac 1 3\)。

所以我们只需要直接统计三种方式各需要改多少个棋子,然后选择一种符合条件的即可。

AC code

#include<bits/stdc++.h>
using namespace std;
int T,n,num[3],sum,xz;
char ch[305][305];
int main()
{
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d",&n),num[0]=num[1]=num[2]=sum=0;
		for(int i=1;i<=n;++i)
		{
			scanf("%s",ch[i]+1);
			for(int j=1;j<=n;++j) if(ch[i][j]=='X') ++num[(i+j)%3],++sum;//统计每种方式需要改的棋子
		}
		if(num[0]<=sum/3) xz=0;
		if(num[1]<=sum/3) xz=1;
		if(num[2]<=sum/3) xz=2;
		for(int i=1;i<=n;++i){for(int j=1;j<=n;++j) if((i+j)%3==xz&&ch[i][j]=='X') printf("O");else printf("%c",ch[i][j]);puts("");}//对应改即可
	}
	return 0;
}

标签:Version,方式,更改,int,CF1450C1,num,Easy,棋子,一种
From: https://www.cnblogs.com/One-JuRuo/p/17829036.html

相关文章

  • CF1450C2 Errich-Tac-Toe (Hard Version)
    思路实际上,如果你会简单版本,那么困难版本也没有那么难了。同样考虑构造一种通解,如下,红色的格子改为X,绿色的格子改为O,就是一种通解,同样的,这样改可能会超过棋子总数的\(\frac13\)。同样考虑将棋子按照位置分类,假如该棋子的位置是\((i,j)\),那么按照\((i+j)\bmod3\)的值......
  • springboot集成EasyPoi,实现Excel/Word的导入导出
    前言在日常工作中,我们经常需要进行Excel或Word文档的导入和导出。这需要我们编写大量的代码和复杂的操作,从而增加了我们工作的难度。而EasyPoi就是针对这种情况而开发出来的一个简单易用的Java导入导出工具。EasyPoi是一个开源的Java导入导出工具,它提供了非常简单易用的API,可以让......
  • 【pwn】[UUCTF 2022 新生赛]easystack --pie爆破
    查看程序保护发现开了pie:partialwrite(部分写入)就是一种利用PIE技术缺陷的bypass技术。由于内存的页载入机制,PIE的随机化只能影响到单个内存页。通常来说,一个内存页大小为0x1000,这就意味着不管地址怎么变,某条指令的后12位,3个十六进制数的地址是始终不变的。因此通过覆盖EIP的......
  • [护网杯 2018]easy_tornado 1(两种解法!)
    题目环境:<br/><br/>发现有三个txt文本文件/flag.txt<br/>/welcome.txt<br/>/hints.txt依此点开<br/>flag在/fllllllllllllag文件中<br/>在hints.txt文件中发现md5计算md5(cookie_secret+md5(filename))并且三个文件中都存在filehash(文件名被哈希算法加密32位小......
  • EasyRE
    注意操作等级亦或的操作优先级比减号低C++运算符优先级_c++运算符的优先级顺序-CSDN博客  转换 还有注意一般都是小端存放,所以这里要逆序输出 ......
  • easyre-153
    这里也是没有做出来,因为有隐藏函数的原因(第一次见)攻防世界XCTF3rd-RCTF-2017easyre153学习笔记_rhelheg-CSDN博客攻防世界逆向高手题之easyre-153-CSDN博客这里提一下pipe(pipedes); fork()两个函数(pipe(pipedes));pipe是个linus编程函数,是个管道,也就是一种把两个进......
  • 视频监控/视频融合平台EasyCVR助力构筑智慧电力解决方案
    安防视频监控平台EasyCVR是一个具有强大拓展性、灵活的视频能力和轻便部署的平台。它支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,还可以支持厂家的私有协议和SDK接入,例如海康Ehome、海大宇等设备的SDK。该平台不仅拥有传统安防视频监控的功能,还具备接入AI智能分析的......
  • 视频汇聚/监控汇聚平台EasyCVR助力小动物保护
    安防视频监控平台EasyCVR是一个具有强大拓展性、灵活的视频能力和轻便部署的平台。它支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,还可以支持厂家的私有协议和SDK接入,例如海康Ehome、海大宇等设备的SDK。该平台不仅拥有传统安防视频监控的功能,还具备接入AI智能分析的......
  • 安防视频监控平台EasyNVR如何使用视频监控系统打造数字化手术室
    EasyNVR是一种可支持设备通过RTSP/Onvif流媒体协议接入的视频处理系统。该系统能够对接入的视频流进行处理,并以多种格式进行多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS和WebRTC等多种格式。在智慧安防等视频监控场景中,EasyNVR可提供视频实时监控直播、云端录像、云存储、录像......
  • [BJDCTF2020]Easy MD5 1
    题目环境:尝试了SQL注入、命令执行等都不行点击提交并burp进行抓包Repeater进行重放这里看到了内置的SQL语句select*from'admin'wherepassword=md5($pass,true)发现传进去的值会进行md5加密这里看了大佬们的解释ffifdyop绕过,绕过原理是:<br/>ffifdyop这个字符串被......