AtCoder Beginner Contest 154
比赛链接:https://atcoder.jp/contests/abc154/tasks
A - Remaining Balls
题意
字符串 $s$、$t$ 分别有 $a$、$b$ 个,与字符串 $u$ 相等的字符串个数减一。
代码
#include <bits/stdc++.h> using namespace std; int main() { string s, t, u; int a, b; cin >> s >> t >> a >> b >> u; u == s ? --a : --b; cout << a << ' ' << b; }
B - I miss you...
题意
将一个字符串中的字符全部替换为 'x' 。
代码
#include <bits/stdc++.h> using namespace std; int main() { string s; cin >> s; cout << string(s.size(), 'x'); }
C - Distinct or Not
题意
判断 $n$ 个数是否两两不同。
代码
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; map<int, int> mp; for (int i = 0; i < n; i++) { int x; cin >> x; ++mp[x]; } bool ok = true; for (auto i : mp) if (i.second >= 2) ok = false; cout << (ok ? "YES" : "NO") << "\n"; }
D - Dice in Line
题意
有 $n$ 个 $p_i$ 面的骰子排成一排,计算取连续 $k$ 个骰子掷出点数期望之和的最大值。
题解
一个 $p_i$ 面骰子掷出点数的期望:$\frac{1+2+...+p_i}{p_i} = \frac{p_i+1}{2}$ 。
一个 $k$ 长区间内骰子点数期望之和:$\frac{p_0 + 1}{2} + \frac{p_1 + 1}{2} + \frac{p_2 + 1}{2} + ... + \frac{p_{k - 1} + 1}{2} = \frac{sum + k}{2}$ 。
因此,取 $k$ 长区间的最大和即可。
代码
#include <bits/stdc++.h> using namespace std; int main() { int n, k; cin >> n >> k; int pre[n + 1] = {}; for (int i = 0; i < n; i++) { int x; cin >> x; pre[i + 1] = pre[i] + x; } int mx = 0; for (int i = k; i <= n; i++) mx = max(mx, pre[i] - pre[i - k]); printf("%.6f\n", (mx + k) / 2.0); }

浙公网安备 33010602011771号