Kattis - battleship【模拟】
2017-04-12 19:32
656 查看
题目链接: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; }
相关文章推荐
- 模拟多用户进行压力测试
- 模拟信号的数字化处理
- PHP函数补完:stream_context_create()模拟POST/GET
- 堆栈模拟队列
- CSU 1329 一行盒子(模拟链表)
- CTM天赋模拟图
- express+mockjs实现模拟后台数据发送功能
- linux 模拟网络延迟、丢包
- 山东省第四届ACM省赛题——Contest Print Server(模拟)
- 【NOI2017模拟4.2】查询【线段树】
- struts2模拟登录
- 模拟POST、Get 请求的工具----postman
- HDU 4782 Beautiful Soup 模拟
- GDOI2016模拟3.9 暴走的图灵机 矩阵乘法优化暴力
- [JZOJ100004]【NOI2017模拟.4.1】 Dice
- linux gpio模拟i2c的使用
- Spring-13.模拟Filter实现
- android虚拟机与笔记本模拟串口通信
- 20160410模拟
- 【NOI2017模拟.4.1】 Dice【概率,期望,DP,精度优化】