考点
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| #include <bits/stdc++.h>
using namespace std;
const int LEN = 1e5 + 10;
struct Ans { int w_, l_; } ans_11[LEN], ans_21[LEN];
#define w_11 ans_11[idx_11].w_ #define l_11 ans_11[idx_11].l_ #define w_21 ans_21[idx_21].w_ #define l_21 ans_21[idx_21].l_
int main() { int idx_11 = 0, idx_21 = 0; char c; while (cin >> c && c != 'E') { if (c == 'W') { ++w_11, ++w_21; } else { ++l_11, ++l_21; } if (abs(w_11 - l_11) >= 2 && max(w_11, l_11) >= 11) { ++idx_11; } if (abs(w_21 - l_21) >= 2 && max(w_21, l_21) >= 21) { ++idx_21; } } for (int i = 0; i <= idx_11; ++i) { cout << ans_11[i].w_ << ":" << ans_11[i].l_ << endl; } cout << endl; for (int i = 0; i <= idx_21; ++i) { cout << ans_21[i].w_ << ":" << ans_21[i].l_ << endl; } return 0; }
|
思路
字符串的题目,先判断处理方式:
显然这道题应该字符依次读入,因为有E
这一个终止符号
每个对局都是一对数字,用结构体Ans
进行保存
由于两种分制的结果需要分开输出,用两个结构体数组ans_11
和ans_21
各自保存11分制和21分制的情况
idx_11
和idx_21
分别控制各自结构体数组的下标
处理对局情况时,有两点要注意:
- 只有当对局中最大得分
>=11
且双方得分的差值>=2
时才可进行下一局;比如11:11
就不能下一局,11:13
可以
- 哪怕当前对局的情况是
0:0
也要输出