[CSP-S模拟测试]:五子棋(模拟)
题目传送门(内部题122)
输入格式
输入文件第一行为一个正整数$n$,表示双方总共下了多少步棋。
接下来$n$行,输入文件每行两个正整数。第$i$行的两个数$x,y$表示第$i$步的棋子下在了第$x$条横线和第$y$条竖线的交叉点上。若$i$为奇数,则这个棋子是黑棋,否则是白棋。
输出格式
若没有人获得胜利,你需要输出$"Tie"$(不含引号)。否则,若小$A$获胜,则输出$"A"$(不含引号),若小$B$获胜,输出$"B"$。当有人获胜时,你还需要输出一个正整数$w$,表示第$w$步下完后游戏应当结束,字母与整数间用一个空格隔开。
样例
样例输入:
20
5 5
4 5
5 6
7 5
6 7
7 2
4 3
8 3
6 6
8 5
6 4
3 3
8 7
3 4
6 5
4 8
6 3
5 10
5 9
8 8
样例输出:
A 17
数据范围与提示
对于$100\%$的数据,满足$0\leqslant n\leqslant 225,1\leqslant x,y\leqslant 15$。
题解
模拟,没了……
注意函数不要忘了返回值,$exit(0)$需要调库,我知道的就这么多了,要是有人还犯了其它低级错误可以找我加上。
我感觉我的打法细节不是很多。
时间复杂度:$\Theta(n)$。
期望得分:$100$分。
实际得分:$100$分。
代码时刻
#include<bits/stdc++.h>
using namespace std;
int n;
int Map[20][20];
int ans;
bool judge(int x,int y)
{
int res1=1,res2=1,res3=1,res4=1;
for(int i=1;;i++)if(Map[x+i][y]!=Map[x][y]){res1+=i-1;break;}
for(int i=1;;i++)if(Map[x-i][y]!=Map[x][y]){res1+=i-1;break;}
for(int i=1;;i++)if(Map[x][y+i]!=Map[x][y]){res2+=i-1;break;}
for(int i=1;;i++)if(Map[x][y-i]!=Map[x][y]){res2+=i-1;break;}
for(int i=1;;i++)if(Map[x+i][y+i]!=Map[x][y]){res3+=i-1;break;}
for(int i=1;;i++)if(Map[x-i][y-i]!=Map[x][y]){res3+=i-1;break;}
for(int i=1;;i++)if(Map[x+i][y-i]!=Map[x][y]){res4+=i-1;break;}
for(int i=1;;i++)if(Map[x-i][y+i]!=Map[x][y]){res4+=i-1;break;}
if(res1>=5||res2>=5||res3>=5||res4>=5)return 1;
return 0;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int x,y;
scanf("%d%d",&x,&y);
Map[x][y]=(i&1)+1;
if(!ans&&judge(x,y))ans=i;
}
if(!ans)puts("Tie");
else if(ans&1)printf("A %d",ans);
else printf("B %d",ans);
return 0;
}
rp++
[CSP-S模拟测试]:五子棋(模拟)的更多相关文章
- 模拟测试—moq:简单一两句
在Xunit的基础上,说话模拟测试. 假如我们有这样一个控制器里面有这样一个方法,如图 我们在对Bar测试得时候,如果测试未通过,错误有可能来至于Bar,也有可能错误来至于serverde Foo方法 ...
- Android单元测试与模拟测试详解
测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabri ...
- [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)
目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...
- 安装nginx python uwsgi环境 以及模拟测试
uwsgi帮助文档: http://uwsgi-docs-cn.readthedocs.io/zh_CN/latest/WSGIquickstart.html http://uwsgi-docs.re ...
- 利用Python中的mock库对Python代码进行模拟测试
这篇文章主要介绍了利用Python中的mock库对Python代码进行模拟测试,mock库自从Python3.3依赖成为了Python的内置库,本文也等于介绍了该库的用法,需要的朋友可以参考下 ...
- 转 C#实现PID控制的模拟测试和曲线绘图
C#实现PID控制的模拟测试和曲线绘图 本文分两部分,一部分是讲PID算法的实现,另一部分是讲如何用动态的曲线绘制出PID运算的结果. 首先,PID算法的理论模型请参考自动控制理论,最早出现的是模 ...
- Mockito:一个强大的用于Java开发的模拟测试框架
https://blog.csdn.net/zhoudaxia/article/details/33056093 介绍 本文将介绍模拟测试框架Mockito的一些基础概念, 介绍该框架的优点,讲解应用 ...
- NOIP模拟测试1(2017081501)
好,今天是cgg第一次举行模拟测试,希望各位支持. 时间限制:2小时 题目链接: 题目一:水得都没名字了 题目二:车站 题目三:选数 不要觉得2小时太少,我的题目很良心,都很简单. 答案可以在模拟测试 ...
- Mock 模拟测试简介及 Mockito 使用入门
Mock 是什么mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法.这个虚拟的对象就是mock对象.mock对象就是真实对象在调试期间的代 ...
随机推荐
- celery 分布式异步队列框架使用方法
简介: Celery 是一个python开发的异步分布式任务调度模块,是一个消息传输的中间件,可以理解为一个邮箱,每当应用程序调用celery的异步任务时,会向broker传递消息,然后celery ...
- CSS行高——line-height 垂直居中等问题
CSS行高——line-height 初入前端的时候觉得CSS知道display.position.float就可以在布局上游刃有余了,随着以后工作问题层出不穷,才逐渐了解到CSS并不是几个sty ...
- 问题:tomcat启动后,可以访问主页面,但是无法访问dubbo-admin
原因分析: 直接查看logs中的日志文件,发现一行 [Catalina-utility-1] org.apache.catalina.startup.HostConfig.undeploy Undep ...
- Elasticsearch中文文档,内容不全
注意 内容不全,这是观看中文文档进行操作的 文档地址 旧版中文文档,部分内容过期 https://www.elastic.co/guide/cn/elasticsearch/guide/current ...
- tp5实现Redis的简单使用
方法1: Controller <?php namespace app\index\controller; use think\Controller; use think\session\dri ...
- zabbix监控,微信报警
微信告警 访问这个地址创建企业微信 https://work.weixin.qq.com/
- 生产者消费者问题--synchronized
# 代码 public class App { public static void main(String[] args) { Depot depot = new Depot(100); Produ ...
- 《编译原理》-用例题理解-自底向上的语法分析,FIRSTVT,LASTVT集
<编译原理>-用例题理解-自底向上的语法分析,FIRSTVT,LASTVT集 上一篇:编译原理-用例题理解-自顶向下语法分析及 FIRST,FOLLOW,SELECT集,LL(1)文法 本 ...
- 字符串类QString
采用Unicode编码,所以一个QChar占用两个字节使用隐式共享技术来节省内存和减少不必要的数据拷贝跨平台使用,不用考虑字符串的平台兼容性QString直接支持字符串和数字之间的相互转换QStrin ...
- springmvc手动渲染jsp
因为需要MockHttpServletResponse对象来得到输出的内容,要引入的包 <dependency> <groupId>org.springframework< ...