2022 年 8 月 27 日 14:00~15:00

选择题 40 道,一道 1.5 分,单多选混杂但有标明。 编程题两道。

# 第一题

时间限制: 1000MS 内存限制: 65536KB 题目描述: 在一张透明的纸上,用笔写下一个字符串。然后将纸翻面,请你判断正面和背面看到的字符串是否一样。 请注意,字符串在正反面看上去一样,必须要求每个字符是左右对称的,比如’W’字符是左右对称的,而’N’不是。 输入描述 输入包含多组数据,每组数据一行,包含一个全由大写字母构成的字符串 S。 输出描述 如果正面和背面看到的字符串一样。输出 YES,否则输出 NO

# 代码


#include
#include

using namespace std;
int main() {
map<char, int> m;
m['A'] = 1;
m['H'] = 1;
m['I'] = 1;
m['M'] = 1;
m['O'] = 1;
m['T'] = 1;
m['U'] = 1;
m['V'] = 1;
m['W'] = 1;
m['X'] = 1;
m['Y'] = 1;
while (1) {
string s;
if (cin >> s) {
int flag = 0;
for (int i = 0;i < s.length();i++) {
if (!m.count(s[i])) {
flag = 1;
break;
}
if (s[i] != s[s.length() - 1 - i]) {
flag = 1;
break;
}
}
if (flag == 1)
cout << "NO" << endl;
else
cout << "YES" << endl;
}
else {
break;
}
}
return 0;
}

# 第二题

时间限制: 1000MS 内存限制: 65536KB 题目描述: 最近一款吃鸡类型的游戏火爆全球。在组队模式下,你可以邀请自己的好友组建自己的小队,并选择是否填充(是否同意和非好友游玩),然后加入游戏。现在有 A 个单人队伍,B 个双人队伍,C 个三人队伍,D 个四人队伍,并且全都同意填充,但已有的多人队伍的队员不能被拆开填充到其他队伍,请问最多能组成多少个四人队伍。 输入描述 第一行一个正整数 T,表示数据组数。(1≤T≤100) 接下来 T 行,每行四个非负整数,A,B,C,D。(0≤A, B, C, D≤150) 输出描述 共 T 行,每行输出一个队伍数。

# 代码


#include
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 0;i < n;i++) {
int A, B, C, D;
cin >> A >> B >> C >> D;
int ans = 0;
ans += D;
if (A >= C) {
ans += C;
A -= C;
}
else {
ans += A;
A = 0;
C -= A;
}
ans += B / 2;
if (B % 2 == 1 && A >= 2) {
ans += 1;
A -= 2;
}
ans += A / 4;
cout << ans << endl;
}
return 0;
}