Kattis - battleship【模拟】
题目链接:Kattis-battleship
题目大意:这道题目意思真的好坑。。
两个军队作战,互相射击对方的船,输入m,n,k,然后分别输入两个军队的地图。#表示该坐标上为船,_表示该坐标上为水。(两幅地图不相关)
给出k个射击坐标,
A先开始射击:如果A射击到B船,则继续射击。直到子弹用完 or B方无船 or A射击到水面-->则换B射击
注意: B方无船,A停止射击。
为了公平,A,B的回合次数一样,由于A先开始射击,也就是说:A射击时如果B无船了。B还能继续射击一回合而不是直接终止
==>即:把A射击x回合 + B射击y回合 当作一轮。 一轮结束后再进行结算
结算:if (ship_a == 0 || ship_b == 0) break;
另外: m 和 n 需注意不要反了
以下是代码:
#include <iostream>
#include <iomanip>
#include <fstream>
#include <sstream>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <algorithm>
#include <functional>
#include <numeric>
#include <string>
#include <set>
#include <map>
#include <stack>
#include <vector>
#include <queue>
#include <deque>
#include <list>
using namespace std;
string a[50];
string b[50];
int x[2005];
int y[2005];
int main()
{int _;cin >> _;while(_--){int n,m,t;cin >> m >> n >> t;for (int i = 0; i < n; i++) cin >> a[i];for (int i = 0; i < n; i++) cin >> b[i];int ship_a = 0, ship_b = 0;for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){if (a[i][j] == '#') ship_a++;}}for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){if (b[i][j] == '#') ship_b++;}}int ans = 0;for (int i = 0; i < t; i++){cin >> x[i] >> y[i];}for (int i = 0; i < t;){// cout << "1." << x[i] << " " << y[i] << " " << b[n - y[i] - 1][x[i]] << endl;//1.if (b[n - y[i] - 1][x[i]] == '#' && i < t){while(b[n - y[i] - 1][x[i]] == '#' && i < t){b[n - y[i] - 1][x[i]] = '_';ship_b--;if (ship_b == 0) break;i++;}i++;}else i++;// cout << "2." << x[i] << " " << y[i] << " " << a[n - y[i] - 1][x[i]] << endl;//2.if (a[n - y[i] - 1][x[i]] == '#' && i < t){while(a[n - y[i] - 1][x[i]] == '#' && i < t){a[n - y[i] - 1][x[i]] = '_';ship_a--;if (ship_a == 0) break;i++;}i++;}else i++;if (ship_a == 0 || ship_b == 0) break;}if (ship_a == ship_b || (ship_a > 0 && ship_b > 0)) cout << "draw\n";else if (ship_a) cout << "player one wins\n";else cout << "player two wins\n";}return 0;
}
Kattis - battleship【模拟】相关推荐
- springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据
SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...
- curl模拟post请求
另外可尝试 postman工具 或者用request 直接请求 CURL 发送POST请求curl -header "Content-Type: application/json" ...
- flask_模拟请求post,get
#coding:utf-8 import requestsres = requests.post(url="http://192.168.135.105:8888/",data={ ...
- 模拟内存计算如何解决边缘人工智能推理的功耗挑战
模拟内存计算如何解决边缘人工智能推理的功耗挑战 How analog in-memory computing can solve power challenges of edge AI inferen ...
- 为放大器模拟输入模块提供可靠的输入过电压保护
为放大器模拟输入模块提供可靠的输入过电压保护 Signal Chain Basics #159: Provide robust input overvoltage protection for amp ...
- 模拟Servlet本质
JavaWeb系列教程,持续更新 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造S ...
- 2021年大数据Flink(四十):Flink模拟双十一实时大屏统计
目录 Flink模拟双十一实时大屏统计 需求 数据 编码步骤: 1.env 2.source 3.transformation 4.使用上面聚合的结果,实现业务需求: 5.execute 参考代码 实 ...
- Python:模拟登录、点击和执行 JavaScript 语句案例
案例一:网站模拟登录 # douban.pyfrom selenium import webdriver from selenium.webdriver.common.keys import Keys ...
- 杨老师课堂_Java核心技术下之控制台模拟文件管理器案例
背景需求介绍: 编写一个模拟文件管理器的程序,实现控制台对文件和文件夹的管理操作. 要求在此程序中: 当用户输入指令 1 时,代表"指定关键字检索文件",此时需要用户输入检索的目录 ...
- 模拟文件上传(一):手动文件上传
关于上传文件,首先我的第一个案例是一个文本文件的上传,简单容易上手! 首先我们上传文件肯定就属于实体内容部分了:所以不能过GET方式请求了,要通过POST方式请求: 因为: 1.get方式是URL传值 ...
最新文章
- 学习社区以及网站总结
- Go 语言编程 — net/http — HTTP 客户端
- 令人作呕的OpenSSL
- 【Nutch2.2.1基础教程之2.1】集成Nutch/Hbase/Solr构建搜索引擎之一:安装及运行【单机环境】...
- 前端综合能力系列之git与gitflow
- php 5.3.3 漏洞,PHP 5.3.10多个拒绝服务漏洞
- 数学建模清风第二次直播:模拟退火算法
- JavaWeb学习总结(十二):Session
- moss2010 sharepoint 2010配置人员搜索
- 77岁“核弹老人”,前后半生都令人动容!
- 二进制编译安装mysql_二进制编译安装mysql
- hp打印机怎么连接电脑_hp打印机驱动怎么安装 惠普打印机驱动程序安装方法【详解】...
- (转)API接口防止参数篡改和重放攻击
- 多个C文件共用一些变量
- java开发_读写txt文件操作
- 技术人不会学习,35 岁必然要焦虑!
- 字节跳动社招面试记录,java异常处理关键字
- sqlite 常用命令
- 模式分解的无损性判断
- excel怎么合并表格