使用 namespace 能使程序可读性更好,便于调试。
// NOI 2018 屠龙勇士 40分部分分代码
#include <algorithm>
#include <cmath>
#include <cstring>
#include <iostream>
using namespace std;
long long n, m, a[100005], p[100005], aw[100005], atk[100005];
namespace one_game {
// 其实namespace里也可以声明变量
void solve() {
for (int y = 0;; y++)
if ((a[1] + p[1] * y) % atk[1] == 0) {
cout << (a[1] + p[1] * y) / atk[1] << endl;
return;
}
}
} // namespace one_game
namespace p_1 {
void solve() {
if (atk[1] == 1) { // solve 1-2
sort(a + 1, a + n + 1);
cout << a[n] << endl;
return;
} else if (m == 1) { // solve 3-4
long long k = atk[1], kt = ceil(a[1] * 1.0 / k);
for (int i = 2; i <= n; i++)
k = aw[i - 1], kt = max(kt, (long long)ceil(a[i] * 1.0 / k));
cout << k << endl;
}
}
} // namespace p_1
int main() {
int T;
cin >> T;
while (T--) {
memset(a, 0, sizeof(a));
memset(p, 0, sizeof(p));
memset(aw, 0, sizeof(aw));
memset(atk, 0, sizeof(atk));
cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= n; i++) cin >> p[i];
for (int i = 1; i <= n; i++) cin >> aw[i];
for (int i = 1; i <= m; i++) cin >> atk[i];
if (n == 1 && m == 1)
one_game::solve(); // solve 8-13
else if (p[1] == 1)
p_1::solve(); // solve 1-4 or 14-15
else
cout << -1 << endl;
}
return 0;
}