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);
}

 

posted @ 2020-05-26 22:00  Kanoon  阅读(165)  评论(0)    收藏  举报